您能解释一下关于内部状态和外部状态数据的不同之处吗:
constructor(){
this.data1 = "this is data 1",
this.state = {
this.data2 = "this is data 2"}
}
因此,如果我在componentDidMount内或渲染函数中使用数据2而没有任何条件代码,它将抛出错误,描述React无法允许无限循环等等,但是如果我在componentDidMount或render函数中使用data1,则它会完美工作。那么什么是difernet?我应该使用data1来使自己获得更大的灵活性吗?
这是有效的语法
constructor(){
this.data = "this is data 1";
}
这不是有效的语法
constructor(){
this.state = {
this.data = "this is data 2"
}
}
但是,这是有效的
constructor(){
this.state = {
data: "this is data 2"
}
}
所以这有什么区别。
1是有效的,但是在更改该值this.data = 'Some new value'
时不会触发组件渲染,并且如果您在jsx / html中显示此值,则除非其他状态更改触发了渲染功能,否则该值不会反映更新的值。
3是定义状态变量的方式,绝不应该mutate
或直接更新状态this.state.data = 'some value'
。您需要更新this.setState({ data: 'some new value' })
将触发渲染功能的值
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句