React Native,警告:setState(...):只能更新已安装或安装的组件

时间:2017-09-10 16:03:37

标签: reactjs react-native

这是我的index.ios.js构造函数:

我想制作动态

  constructor(props){
    super(props);
    this.state = {
      testMessage : ''
    }
    this.testF()
  }

  testF(){
    this.setState({testMessage:'asdasd'});
    console.log(this.state)    
  }

这是错误:

  

警告:setState(...):只能更新已安装或安装的组件。这通常意味着您在已卸载的组件上调用了setState()。这是一个无操作。

我该如何解决?

2 个答案:

答案 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时,组件尚未安装,因此您收到警告。您可以使用componentWillMountcomponentDidMount来使用setState。或者在构造函数中使用this.state更改状态。