Когда я хочу установить состояние в жизненном цикле рендеринга, он выдает мне эту ошибку
Warning: Cannot update during an existing state transition (such as within
renderor another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved tocomponentWillMount.
changeInitial(){
this.setState({initialLoad: false});
}
render() {
if (this.state.initialLoad) {
Animated.timing(this.state.listPosition, {
toValue: 350,
duration: 2000,
}).start(() => this.changeInitial());
}
}
Причина ошибки в том, что если вы установитеState в рендере, это вызовет повторный рендеринг и т. д. Вы получите бесконечный цикл.
Вы должны более подробно рассказать о том, что вам действительно нужно, или привести пример ... Чтобы мы могли предоставить вам нужное место. Все возможно ...: D
вы должны написать свой if внутри метода componentDidMount()
setState в рендере вызовет повторный рендеринг .. вы получите бесконечный цикл.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы не должны использовать setState() внутри метода render(), потому что он запускает повторный рендеринг внутри рендеринга, вызывая ошибку. Лучше всего это сделать внутри метода 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
}
Как сказано в предупреждении, вы не должны вызывать
setState()во времяrender(). Вам нужно будет переделать свой компонент, чтобы этого не делать.