在使用setState时发生死循环的错误,可能的原因是在这三个地方使用了setState:
- componentDidUpdate;
- componentWillUpdate;
- render。
为什么会这样?
每次渲染页面的时候就会调用render,render里面是setState,就要执行setState,而每次执行setState就要重新渲染页面,要渲染调用render,render里执行setState,又重新渲染调用render---setState--render---setState...就这样一直发生死循环。
只需将 setState() 调用移到 render() 函数之外即可。
如果在组件挂载后必须初始化状态(也许是从API端点提取数据),请在 componentDidMount() 中进行。
如果可以在组件挂载之前初始化状态,也可以使用构造函数来完成。