使用react.js强制重新渲染(更新状态并更新DOM)

tjh*_*nce 12 javascript reactjs

我意识到调用setState不会this.state立即更新,也不会立即调用render和刷新DOM.文档说

setState()不会立即改变this.state,但会创建挂起状态转换.调用此方法后访问this.state可能会返回现有值.

无法保证对setState的调用进行同步操作,并且可以对调用进行批处理以获得性能提升.

我希望能够在任何时候强制这样的"状态转变".这似乎应该是一个相当自然的操作,但我在文档中找不到任何提及它.有办法吗?

Col*_*say 9

你可以使用forceUpdate这个:

如果你的render()方法从this.props或this.state以外的东西读取,你需要通过调用forceUpdate()来告诉React何时需要重新运行render().如果你直接改变this.state,你还需要调用forceUpdate().

https://facebook.github.io/react/docs/component-api.html#forceupdate

  • 我不确定`forceUpdate`是否符合我的要求(也许它确实如此,但无论如何,它都不清楚.)我认为`forceUpdate`的意思是让元素重新渲染,即使没有设置状态,但是这个渲染仍然可以像任何渲染一样排队.这是对还是错? (11认同)