反应存储数据以进行复杂处理

时间:2020-09-12 21:46:10

标签: javascript reactjs

我对ReactJS有点陌生。

我想在ReactJS中存​​储用于复杂计算的数据。由于setState是异步的,因此不必费心将所有必需的数据存储在state内,因为几乎不可能做我想做的事。

我正在考虑执行以下操作:将所需的变量存储在状态本身内部的对象中。例如,在构造函数中定义的状态是以下对象

constructor(props){
    this.state = { complicated_storage: { x : 123, y : 324 } }
}

通过这种方式,我可以操纵this.state.compicated_storage.xthis.state.compicated_storage.y,并进行类似this.state.compicated_storage.x = 4的操作而不必担心异步行为。

这是在ReactJS中做事情的一种不好的方法。我注意到,您可以绕过整个setState机制,而只需将我的所有变量存储在state中的对象内。

谢谢

1 个答案:

答案 0 :(得分:0)

这是在ReactJS中做事情的一种不好的方法。我注意到,您可以绕过整个setState机制,而只将我所有的变量存储在状态内的对象内。

状态的全部目的是在状态改变时重新呈现组件。如果您直接修改它,例如state.someVariable = 2,React将不会知道您的更改,并且在更改后它不会重新渲染您的组件(但是,如果以后其他原因导致重新渲染,则更改将被反映出来)。 / p>

如果您需要更改某些数据以触发重新渲染并更新视图,请与setState一起使用状态。

否则,您可以简单地使用类字段,而不是将其存储在状态中。

此外,我不确定您认为异步会以何种方式阻碍您的目标,因此也许您应该在那里更加清楚。状态为异步状态只是意味着状态更改是在调用该函数后“稍晚一点”进行的(这是另一个主题),因此React出于性能原因可以批量更新。

最后但并非最不重要的是,您应该研究钩子(useState),而不是使用类组件。