如果反应组件是一个类,为什么它会保持状态呢?

时间:2018-02-26 16:06:46

标签: javascript reactjs

我看到反应组件有" this.state"但是为什么如果我能拥有各种各样的" this.var1"," this.var2",即类变量。如果它在es6中被定义为,那么它已经有了自己的状态。

我看到如果我用" setState"更改状态然后它会重新渲染。但是,设置类变量然后在我认为合适时调用this.rerender()会更容易吗?有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

react使用state而不是类方法来决定是否渲染组件有多种原因。

您可以将类变量与state一起使用。 setState是异步的,允许对优化渲染做出反应。 setState之后调用的渲染方法隐式发生,因此我们不需要每次都这样做。

有很多关于这个主题的博客和推文。

Do I need to use setState(function) overload in this case?

https://reactjs.org/docs/state-and-lifecycle.html

https://twitter.com/dan_abramov/status/824309659775467527?lang=en

答案 1 :(得分:1)

在React文档中仔细阅读State and LifecyclesetState。 React有几个优化,以及与状态相关的功能,例如异步和合并状态更新。调用setState开始了一个非平凡的过程,该过程无法简单地替换为对象属性并调用forceUpdate

上面链接的setState页面中的一个链接是深入:为什么不立即更新this.state?,链接到this github issue comment也是如此很长一段时间在这里复制,但点击要点"保证内部一致性"和"启用并发更新"。