我能做这样的事吗?它是否避免了异步状态更改的问题?
class Widget extends React.Component {
constructor () {
this.value = '123';
}
render () {
var hello = this.value;
// ...
}
}
答案 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()});