Javascript 如何在render react native中设置状态
当我想在渲染生命周期中设置状态时,它会给我这个错误 警告:无法在现有状态转换期间更新(例如在Javascript 如何在render react native中设置状态,javascript,reactjs,react-native,Javascript,Reactjs,React Native,当我想在渲染生命周期中设置状态时,它会给我这个错误 警告:无法在现有状态转换期间更新(例如在render或其他组件的构造函数中)。渲染方法应该是道具和状态的纯函数;构造函数的副作用是一种反模式,但可以移动到componentWillMount 您不应该在render()方法中使用setState(),因为它会在渲染中触发重新渲染,并引发错误。更好的方法是在componentDidMount()方法中,如下所示: changeInitial(){ this.setState({initial
render
或其他组件的构造函数中)。渲染方法应该是道具和状态的纯函数;构造函数的副作用是一种反模式,但可以移动到componentWillMount
您不应该在
render()
方法中使用setState()
,因为它会在渲染中触发重新渲染,并引发错误。更好的方法是在componentDidMount()
方法中,如下所示:
changeInitial(){
this.setState({initialLoad: false});
}
componentDidMount(){
if (this.state.initialLoad) {
Animated.timing(this.state.listPosition, {
toValue: 350,
duration: 2000,
}).start(() => this.changeInitial());
}
}
render() {
// Your component template here
}
您不应该在
render()
方法中使用setState()
,因为它会在渲染中触发重新渲染,并引发错误。更好的方法是在componentDidMount()
方法中,如下所示:
changeInitial(){
this.setState({initialLoad: false});
}
componentDidMount(){
if (this.state.initialLoad) {
Animated.timing(this.state.listPosition, {
toValue: 350,
duration: 2000,
}).start(() => this.changeInitial());
}
}
render() {
// Your component template here
}
正如警告所说,在
render()
过程中,不应调用setState()
。您需要重新设计组件以避免这样做。错误的原因是,如果在“渲染”中设置“状态”,它将触发重新渲染等。。你将结束一个永远的循环。你应该给出你真正需要的更多细节,或者给我们一个例子。。。因此,我们可能会为您提供正确的地点。一切皆有可能……:d您应该在渲染中的componentDidMount()
methodsetState中写入if,它将触发重新渲染。。您将结束一个无限循环。正如警告所说,在render()
过程中不应调用setState()
。您需要重新设计组件以避免这样做。错误的原因是,如果在“渲染”中设置“状态”,它将触发重新渲染等。。你将结束一个永远的循环。你应该给出你真正需要的更多细节,或者给我们一个例子。。。因此,我们可能会为您提供正确的地点。一切皆有可能……:d您应该在渲染中的componentDidMount()
methodsetState中写入if,它将触发重新渲染。。你将结束一个无限循环。