【发布时间】:2020-02-16 19:39:06
【问题描述】:
我知道我可以用我的 <Context.Provider> 包装 HOC 并在所有子组件中使用它。
我想在两个单独的组件中使用上下文,但它们嵌套在某个很深的地方,并且它们最近的父级位于应用程序根目录中的某个地方。我不想为(几乎)所有组件提供上下文,所以我想知道是否可以只包装这两个组件?
我尝试这样做,但只有第一个组件获取上下文。
App 结构如下所示:
<App>
<A1>
<A2>
<MyContext.Provider>
<Consumer1/>
</MyContext.Provider>
</A2>
</A1>
<B1>
<B2>
<MyContext.Provider>
<Consumer2/>
</MyContext.Provider>
</B2>
</B1>
</App>
编辑:我错误地认为包装根组件会在上下文更改时重新渲染所有子组件。只有消费者会重新渲染,所以包装根组件非常好。
【问题讨论】:
-
I don't want to provide context to (almost) all components你的意思是几乎所有组件都不使用上下文,还是说它们确实使用它并且你需要特意确保它们没有任何内容消费? -
如果我用
<Context.Provider>包裹根组件,所有子组件将在上下文更改时重新渲染。这是不必要的,因为只有少数子组件需要上下文中的数据。
标签: reactjs react-context