【发布时间】:2019-07-10 10:17:20
【问题描述】:
基本上我的问题是,如果您的应用中有很多上下文,您的应用可能看起来像这样
<ContextOne.Provider value={contextOneVal}>
<ContextTwo.Provider value={contextTwoVal}>
<ContextThree.Provider value={contextThreeVal}>
<ContextFour.Provider value={contextFourVal}>
<div>App Here</div>
</ContextFour.Provider>
</ContextThree.Provider>
</ContextTwo.Provider>
</ContextOne.Provider>
有没有更好的方法将核心应用包装在多个上下文中?
注意:是的,我知道 redux,我知道 redux 没有这个问题。
【问题讨论】:
-
它可以是单个提供者,其值作为对象属性。完全取决于这些上下文是什么以及如何使用它们。
-
这里有什么问题?你想改进哪方面?
-
@skyboyer 深嵌套是我想要避免的。
-
我不相信有很多选择。它要么是组合(通过嵌套在 JSX 中,要么是像
compose这样的 HOC,但对于上下文)或继承(组合超级上下文,就像多个上下文的外观一样)。从这个角度来看,组合比继承更灵活。并且显式组合(嵌套 JSX)比辅助函数的隐式初始化更清晰/干净。所以最好习惯这样的语法:)
标签: reactjs react-context