我看到反应组件有" this.state"但是为什么如果我能拥有各种各样的" this.var1"," this.var2",即类变量。如果它在es6中被定义为类,那么它已经有了自己的状态。
我看到如果我用" setState"更改状态然后它会重新渲染。但是,设置类变量然后在我认为合适时调用this.rerender()会更容易吗?有没有办法做到这一点?
答案 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 Lifecycle和setState
。 React有几个优化,以及与状态相关的功能,例如异步和合并状态更新。调用setState
开始了一个非平凡的过程,该过程无法简单地替换为对象属性并调用forceUpdate
。
上面链接的setState
页面中的一个链接是深入:为什么不立即更新this.state?,链接到this github issue comment也是如此很长一段时间在这里复制,但点击要点"保证内部一致性"和"启用并发更新"。