为什么我们不能在不调用 setState() 的情况下改变 React 中的状态

Hen*_*aye 1 reactjs

我想知道我们setState()在 React 中仅用于更新状态的原因?

为什么我们不能做这个?

this.state.vote = this.state.vote + 1
Run Code Online (Sandbox Code Playgroud)

Sea*_*ean 6

您需要使用该setState()方法的原因是一个称为可变性的概念。

当 React 组件中的状态更改时,您通常希望它触发组件的重新渲染(以反映这些更改)。setState除非shouldComponentUpdate阻止这种情况,否则使用将始终触发重新渲染。通过像这样在状态对象上设置属性this.state.vote = this.state.vote + 1,您正在改变现有的状态对象。由于 javascript 中对象的工作方式,React 无法轻易判断此对象已更改。

当您使用 React 的setState()方法时,您正在创建一个新版本的状态对象,React 识别该对象并反过来知道它需要重新渲染组件。

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

这是一篇有趣的文章,可以阅读有关突变的信息