警告:无法在尚未安装的组件上调用setState

时间:2019-09-26 19:51:15

标签: javascript reactjs jestjs setstate

在单元测试(玩笑)中尝试更改setstate输入值时收到此警告

警告:无法在尚未安装的组件上调用setState。这是一项禁止操作的操作,但可能表明您的应用程序中存在错误。而是直接分配给this.state或在Login组件中定义具有所需状态的state = {};类属性。 我的代码是:

this.onChangeEvent = this.onChangeEvent.bind(this);

this.state = { email: '' }

componentDidMount() { this.onChangeEvent(); }

componentWillUnmount() { }

onChangeEvent(event) {     
    this.setState({ email: e.target.value });     
}

我找不到此警告的正确解决方案。有人可以帮助我解决此警告吗?

2 个答案:

答案 0 :(得分:2)

上下文绑定状态初始化必须在$("#container").addClass("sidebar-close");内部完成。

constructor

答案 1 :(得分:0)

尝试一下

class App extends Component {
constructor(props) {
    super(props);
    this.state = {
        email: ""
    }
}
onChangeEvent(event) {
    this.setState({
        email: event.target.value
    });
}
render() {
    const {
        email
    } = this.state;
    return ( <div className = "App">
        <input type = "text"
        onChange = { this.onChangeEvent.bind(this)}
        value = {email}/>
        </div>
    );
 }
}