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,它将触发重新渲染。。你将结束一个无限循环。