Javascript 当道具更改时,组件如何知道重新渲染?

Javascript 当道具更改时,组件如何知道重新渲染?,javascript,reactjs,Javascript,Reactjs,我们知道,当道具或状态更改时,React组件将重新呈现(假设shouldComponentUpdate()未被阻止) 我的问题是:React如何知道组件的道具已更改,因此需要重新渲染?这是怎么发生的 对于state,所有的突变都是通过setState()完成的,所以至少我可以看到机制,但对于props,这一切似乎都很神奇。你想知道如何比较新旧prop,或者检查是如何触发的?对于我们使用states/props创建的每个组件,都会创建一个虚拟Dom,这个虚拟Dom用于比较。当值发生变化时,它会更新

我们知道,当道具或状态更改时,React组件将重新呈现(假设
shouldComponentUpdate()
未被阻止)

我的问题是:React如何知道组件的道具已更改,因此需要重新渲染?这是怎么发生的


对于state,所有的突变都是通过
setState()
完成的,所以至少我可以看到机制,但对于props,这一切似乎都很神奇。

你想知道如何比较新旧prop,或者检查是如何触发的?对于我们使用states/props创建的每个组件,都会创建一个虚拟Dom,这个虚拟Dom用于比较。当值发生变化时,它会更新视图。道具发生变化的唯一方式是重新渲染父组件。在组件渲染期间,React将通过树向下传播更改到任何具有道具更改的内容。本文可能会很有用: