什么是diff b / w this.name和this.state.name作出反应?

时间:2017-09-14 10:43:43

标签: javascript reactjs

React在构造函数中具有实例属性和状态属性。

实例属性 - 它不会重新渲染视图。用于存储值。 State属性 - 存储并重新呈现视图。

除了上述任何其他原因或差异,或何时应该在React类组件的构造函数中使用实例和状态?。

示例:

class example extends Component{
  constructor(){
     this.state = {
       name: 'albert'
     };
    this.name = 'albert';
  }
}

4 个答案:

答案 0 :(得分:1)

当组件状态发生变化时,它会触发组件重新呈现(如果它未在shouldComponentUpdate()中设置为忽略)。

更改实例属性不会触发重新渲染。

答案 1 :(得分:1)

两者的简单区别是视图部分渲染。 EX:当状态更新时,视图也会更新。有时候视图不需要重新加载,我们可以将值存储在组件实例中,就像你提到的那样 this.name

请查看以下链接,了解有关州和实例的更多信息 https://medium.freecodecamp.org/where-do-i-belong-a-guide-to-saving-react-component-data-in-state-store-static-and-this-c49b335e2a00

答案 2 :(得分:1)

这取决于您的要求,您在其中存储的数据类型。

当更新任何状态变量时,请回复调用render以对DOM元素进行更改,因此如果要在DOM中进行任何更改,则应使用state否则为实例。

  

目前的最佳做法是使用本地状态来处理状态   您的用户界面(UI)状态而不是数据。

来自this article

当您只想保存一些数据以用于UI处理,计算等时,

和实例属性。 请查看此参考react-components-elements-and-instances以获取更多详细信息

答案 3 :(得分:0)

每当更新状态时,react会调用render()方法来更新带有所需更改的DOM,并且应始终使用setState()进行更新。实例变量对块级操作很有用,然后在需要时更新状态。因此,如果要重新呈现DOM使用状态变量,请使用实例变量。