。这是因为React的Context机制是基于引用比较的,而不是基于值比较的。当使用useContext hook获取Context的值时,React会检查该值是否与上一次获取的值相同,如果相同,则认为该值没有发生变化,不会触发DOM的重新渲染。
这种行为可以带来一些性能优势,因为在某些情况下,我们可能只想在特定的值发生变化时才重新渲染组件,而不是每次Context的值发生变化时都重新渲染。
然而,如果我们希望在存储在useContext中的对象更新时触发DOM的重新渲染,可以采取一些措施。一种方法是使用useState hook将Context的值存储在组件的状态中,然后在状态更新时,React会触发DOM的重新渲染。另一种方法是使用useEffect hook监听Context的值的变化,并在变化时执行一些操作,例如手动触发重新渲染或执行其他逻辑。
总结起来,当存储在useContext中的对象更新时,DOM不会重新呈现,这是因为React的Context机制是基于引用比较的。如果需要在对象更新时重新渲染DOM,可以使用useState或useEffect hook来实现。
领取专属 10元无门槛券
手把手带您无忧上云