我的整个代码中只有一个this.setState
来电,并且在构造函数中,但我收到setState
错误。
为了清楚起见,我已将其缩减为以下代码:
import React, { Component } from 'react';
class App extends Component {
constructor() {
super();
this.setState({
hello: 'nothing'
});
}
render() {
return (
<div></div>
);
}
}
export default App;
proxyConsole.js:56
警告:setState(...)
:只能更新已安装或安装的组件。这通常意味着您在未安装的组件上调用了setState()
。这是一个无操作。请检查App
组件的代码。
为什么会发生这种情况?如何在构造函数中设置状态?
答案 0 :(得分:6)
在构建组件时设置初始状态时,请直接设置this.state
,不要使用this.setState
。 setState
只能在组件已挂载时使用,并且在构造函数中组件已未已挂载 - 因此直接设置状态。每the React documentation:
<强>
constructor()
强>
constructor(props)
在安装之前调用React组件的构造函数。 [...]
构造函数是初始化状态的正确位置。如果您没有初始化状态而且没有绑定方法,则不需要为React组件实现构造函数。
constructor() {
super();
this.state = {
hello: 'nothing'
};
}
您可以指定
this.state
的唯一位置是构造函数。