这是我的index.ios.js
构造函数:
我想制作动态
constructor(props){
super(props);
this.state = {
testMessage : ''
}
this.testF()
}
testF(){
this.setState({testMessage:'asdasd'});
console.log(this.state)
}
这是错误:
警告:setState(...):只能更新已安装或安装的组件。这通常意味着您在已卸载的组件上调用了setState()。这是一个无操作。
我该如何解决?
答案 0 :(得分:0)
在组件的类中实现componentDidMount
组件生命周期挂钩。像这样:
constructor(props){
super(props);
this.state = {
testMessage : ''
}
}
componentDidMount() {
this.testF();
}
testF(){
this.setState({testMessage:'asdasd'});
console.log(this.state)
}
PS:请记住setState
是异步的,因此在某些情况下,每当您尝试在setState
之后立即记录组件的状态时,您可能还没有看到更新后的状态
答案 1 :(得分:0)
那是因为你在构造函数中使用setState
。国家只是一个常规的对象。通过使用setStte
更新的值和重新呈现的组件。在构造函数中调用setState时,组件尚未安装,因此您收到警告。您可以使用componentWillMount
或componentDidMount
来使用setState
。或者在构造函数中使用this.state
更改状态。