为什么在不调用setState()

时间:2018-07-19 15:25:27

标签: reactjs

我想知道我们仅使用setState()来更新react中的状态的原因吗?

为什么我们不能做到这一点?

this.state.vote = this.state.vote + 1

1 个答案:

答案 0 :(得分:4)

之所以需要使用setState()方法,是因为有一个称为可变性的概念。

当React组件的状态发生变化时,通常希望它触发组件的重新渲染(以反映这些更改)。除非setState禁止这样做,否则使用shouldComponentUpdate总是会触发重新渲染。通过像这样this.state.vote = this.state.vote + 1来设置状态对象的属性,就可以更改现有的状态对象。由于javascript中对象的工作方式,React无法轻松地判断该对象已更改。

当您使用React的setState()方法时,您将创建一个新版本的状态对象,React可以识别该状态对象,进而知道它需要重新呈现组件。

这是一个简化的解释,但希望它可以向您解释核心概念。

Here's an interesting article to read about mutation