javascript 在React对象中,“_store”属性意味着什么?

qf9go6mv  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(137)

我正在开发一个使用Redux的React应用程序,特别是一个组件根本没有渲染,尽管它周围的所有代码 * 似乎 * 工作得很好,通过记录错误的组件,我设法找到那些渲染和那些不渲染的组件之间的唯一区别是react对象的**_store**属性

正如你所看到的,_store是一个只有一个属性的对象,validated,它在渲染的组件上为true,在不渲染的组件上为false,我在互联网上找不到任何关于这意味着什么的信息,也找不到为什么它有时是true或false的信息
我的问题是,这个属性是什么,是什么导致它为假?

qgelzfjb

qgelzfjb1#

当你创建一个react元素时,React会为返回的对象在开发模式下分配一个_store属性,这样它就可以作为验证的标志。
你知道在React中,列表中的每个子元素都应该有一个唯一的key属性。验证器会检查此情况,如果我们没有提供密钥,则会在控制台中显示一个错误。验证器将element._store.validated的值更改为true,这样我们就不会反复运行此验证。
这里可以找到将_store属性添加到元素对象的代码。请注意,代码是用if (__DEV__) Package 的。所以_store不会出现在产品代码中。
_store(至少到目前为止)只有一个属性:validatedbooleanvalidated没有直接添加到element对象的原因是react元素使用Object.freeze冻结,但验证器函数需要对其进行变异并将其更改为true以将元素标记为“已验证”。
也就是说,这个属性只是一个警告级别错误的标志,它不会决定你的组件是否应该呈现。

相关问题