Javascript 为什么我们不应该';不直接在ReactJS中修改状态?

Javascript 为什么我们不应该';不直接在ReactJS中修改状态?,javascript,reactjs,Javascript,Reactjs,说 例如,这不会重新渲染组件: //错 this.state.comment = 'Hello'; 相反,请使用setState(): //正确的 this.setState({comment: 'Hello'}); 但是,为什么没有答案?使用第二个框架的理由是什么是正确的?当您使用像React这样的高级框架时,他们不会费心详细解释原因,因为对于一篇简单的文章来说,它太复杂了。理解为什么需要深入理解React以及香草JavaScript如何在引擎盖下工作。查看源代码对您来说是一种选择,但如果

例如,这不会重新渲染组件:

//错

this.state.comment = 'Hello';
相反,请使用setState():

//正确的

this.setState({comment: 'Hello'});

但是,为什么没有答案?使用第二个框架的理由是什么是正确的?

当您使用像React这样的高级框架时,他们不会费心详细解释原因,因为对于一篇简单的文章来说,它太复杂了。理解为什么需要深入理解React以及香草JavaScript如何在引擎盖下工作。查看源代码对您来说是一种选择,但如果您将他们的文档视为表面价值,则生活会更轻松

虚拟DOM: React保留页面上一状态的副本。当它决定什么应该重新绘制,什么不应该重新绘制时,它使用它作为参考点。当您单击一个按钮时,整个页面不需要将整个DOM重新绘制为完全相同的值,但是JavaScript有点糟糕的是

JavaScript中的对象不存在值相等 要找出虚拟DOM和下一个要重新绘制的DOM之间的差异是不可能的,因为JavaScript无法识别


console.log([]=[])
查看文档中以下章节列出的理由。React中的状态更新是异步且不可变的,因此直接使用
this.State.comment='Hello'来改变状态是禁止的。@Thole我相信他/她已经了解协议,但正在寻找解释,从根本上讲,
setState
是重新提交的正确方法。从技术上讲,国家不是一成不变的。相反,在调用
setState
时,应该将其视为不可变的,以保持引用的唯一性。我同意,以表面价值获取文档更容易。我是通过艰苦的方式学会的。但有些时候,我不能盲目地看待事情,寻找原因。在你遇到问题之前,有很多事情要解释。你想让我澄清一下吗?这肯定会对某些人有所帮助platform@user3705478更新但如果我使用document.getElementByID(“thing”).innerHTML=“boink”
,则整个文档也不会重新提交。。。只有一个id为“thing”的元素。。。那么,为什么虚拟dom更快呢?