【发布时间】:2021-09-24 23:48:32
【问题描述】:
我的 react 应用中有路由共享数据,所以我想使用 Context 来共享数据。但并不是所有路由都共享同一种数据,所以我的解决方案是使用多个 Context Providers。
<ClientsContextProvider>
<ProtectedRoute
exact
path="/clients/:clientId"
isAuth={isAuth}
component={Client}
/>
<ProtectedRoute
exact
path="/clients"
isAuth={isAuth}
component={Clients}
/>
</ClientsContextProvider>
<ProjectsContextProvider>
<ProtectedRoute
exact
path="/projects"
isAuth={isAuth}
component={Projects}
/>
<ProtectedRoute
exact
path="/projects/:projectId"
isAuth={isAuth}
component={Project}
/>
</ProjectsContextProvider>
最终,应用程序被一个身份验证上下文提供程序包装,但我希望根据它需要的数据将一些路由包装在一个特定的上下文提供程序中。
当前的问题是,虽然顶部的路由 (<ClientsContextProvider>) 可以工作,但它下面的兄弟 (<ProjectsContextProvider>) 不工作。当我在浏览器中使用 React Developer Tools 检查组件树时,即使我在 (Projects) 路由中,也只显示 <ClientsContextProvider>。
【问题讨论】:
标签: reactjs react-router react-hooks react-context