我正在开发一个使用Redux的React应用程序,特别是一个组件根本没有渲染,尽管它周围的所有代码 * 似乎 * 工作得很好,通过记录错误的组件,我设法找到那些渲染和那些不渲染的组件之间的唯一区别是react对象的**_store**属性
正如你所看到的,_store是一个只有一个属性的对象,validated,它在渲染的组件上为true,在不渲染的组件上为false,我在互联网上找不到任何关于这意味着什么的信息,也找不到为什么它有时是true或false的信息
我的问题是,这个属性是什么,是什么导致它为假?
1条答案
按热度按时间qgelzfjb1#
当你创建一个react元素时,React会为返回的对象在开发模式下分配一个
_store
属性,这样它就可以作为验证的标志。你知道在React中,列表中的每个子元素都应该有一个唯一的key属性。验证器会检查此情况,如果我们没有提供密钥,则会在控制台中显示一个错误。验证器将
element._store.validated
的值更改为true
,这样我们就不会反复运行此验证。这里可以找到将
_store
属性添加到元素对象的代码。请注意,代码是用if (__DEV__)
Package 的。所以_store
不会出现在产品代码中。_store
(至少到目前为止)只有一个属性:validated
是boolean
。validated
没有直接添加到element对象的原因是react元素使用Object.freeze
冻结,但验证器函数需要对其进行变异并将其更改为true
以将元素标记为“已验证”。也就是说,这个属性只是一个警告级别错误的标志,它不会决定你的组件是否应该呈现。