值是否应该存储在组件的实例上?

时间:2018-03-23 16:52:43

标签: javascript reactjs

我能做这样的事吗?它是否避免了异步状态更改的问题?

class Widget extends React.Component {

  constructor () {
    this.value = '123';
  }

  render () {
    var hello = this.value;
    // ...
  }
}

4 个答案:

答案 0 :(得分:2)

是的,您可以使用Class属性来存储数据,您可以在render方法中使用它。例如:常量

但是您必须使用state来存储直接影响组件呈现方式的数据,并使用setState函数来更新状态,因为这会触发组件重新呈现。在简单类属性中设置数据不会重新渲染组件。

Does it avoid issues with asynchronous state changes? 在异步操作之后的编号,例如:ajax api fetch,如果你只是设置this.data = fetchedData ReactDom不知道新数据已经到达并且它应该重新渲染组件。但是如果你使用的是setState,它就会知道它可以触发所有需要的生命周期方法和渲染方法。

答案 1 :(得分:0)

  

我能做这样的事吗?

是的确定。

  

是否可以避免异步状态更改的问题?

不,确实让事情变得更糟。对于状态更改,请使用setState

答案 2 :(得分:0)

class Widget extends React.Component {

  constructor () {
    this.state = {
      value: '123'
    }
  }
  render () {
    var hello = this.state.value;
    // ...
  }
}

答案 3 :(得分:0)

是的,你可以这样做。 但每当值改变时,如

this.value =“newValue”

更改不会反映在VIEW中,因为render()不会被调用。

您可以通过在状态

中设置随机ID更改来立即设置查看此更改的状态
this.value = "newValue"; 
this.setState({id:Math.random()});