[英]How can I use React Context with react-router-dom?
AuthContext:授权上下文:
import { createContext } from "react";
export const AuthContext = createContext(null);
App.js:应用程序.js:
const App = () => {
const isLogin = false;
if (isLogin) {
return (
<RouterProvider router={privateRoute} />
);
} else {
return (
<RouterProvider router={publicRoute} />
);
}
};
export default App;
I try to put <RouterProvider>
in AuthContext
like this:我尝试将
<RouterProvider>
放在AuthContext
中,如下所示:
<AuthContext.RouterProvider router={privateRoute} />
and like this:像这样:
<AuthContext>
<RouterProvider router={privateRoute} />
</AuthContext>
None of these options worked.这些选项都不起作用。 What am I doing wrong?
我究竟做错了什么?
you are trying to use the AuthContext
with the RouterProvider
but AuthContext
have no property or component called RouterProvider
.您正在尝试将
AuthContext
与RouterProvider
一起使用,但AuthContext
没有名为RouterProvider
的属性或组件。
To use AuthContext
in combination with the RouterProvider
, you will need to wrap the RouterProvider
component in a component that consumes the AuthContext
's value ( ie useContext(AuthContext) ).要将
AuthContext
与RouterProvider
结合使用,您需要将RouterProvider
组件包装在一个使用AuthContext
的值的组件中(即 useContext(AuthContext) )。
Here a snippet to help you out... In this we are using AuthContext
value to detemine the value of routes
and then use it with RouterProvider
这里有一个片段可以帮助你......在这里我们使用
AuthContext
值来确定routes
的值,然后将它与RouterProvider
一起使用
const App = () => { const auth = useContext(AuthContext); const routes = auth.isLoggedIn? privateRoute: publicRoute; return ( <RouterProvider router={routes} /> ); }; export default App;
inside and you need to wrap the App
component inside AuthContext
like...在里面,您需要将
App
组件包装在AuthContext
,例如...
ReactDOM.createRoot(document.getElementById("root")).render(
<React.StrictMode>
<AuthContext>
<App />
</AuthContext>
</React.StrictMode>
);
One has nothing to do with the other.一个与另一个无关。 The issue is that
AuthContext
doesn't have any RouterProvider
property nor is the code you are trying to use actually using a React context Provider
component and value.问题是
AuthContext
没有任何RouterProvider
属性,您尝试使用的代码也没有实际使用 React context Provider
组件和值。
Just wrap the App
component with the AuthContext.Provider
component and ensure a context value is passed.只需使用
AuthContext.Provider
组件包装App
组件并确保传递上下文值。
Example:例子:
<AuthContext.Provider value={{ ..... }}>
<App />
</AuthContext.Provider>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.