[英]How can I use React Context with react-router-dom?
授權上下文:
import { createContext } from "react";
export const AuthContext = createContext(null);
應用程序.js:
const App = () => {
const isLogin = false;
if (isLogin) {
return (
<RouterProvider router={privateRoute} />
);
} else {
return (
<RouterProvider router={publicRoute} />
);
}
};
export default App;
我嘗試將<RouterProvider>
放在AuthContext
中,如下所示:
<AuthContext.RouterProvider router={privateRoute} />
像這樣:
<AuthContext>
<RouterProvider router={privateRoute} />
</AuthContext>
這些選項都不起作用。 我究竟做錯了什么?
您正在嘗試將AuthContext
與RouterProvider
一起使用,但AuthContext
沒有名為RouterProvider
的屬性或組件。
要將AuthContext
與RouterProvider
結合使用,您需要將RouterProvider
組件包裝在一個使用AuthContext
的值的組件中(即 useContext(AuthContext) )。
這里有一個片段可以幫助你......在這里我們使用AuthContext
值來確定routes
的值,然后將它與RouterProvider
一起使用
const App = () => { const auth = useContext(AuthContext); const routes = auth.isLoggedIn? privateRoute: publicRoute; return ( <RouterProvider router={routes} /> ); }; export default App;
在里面,您需要將App
組件包裝在AuthContext
,例如...
ReactDOM.createRoot(document.getElementById("root")).render(
<React.StrictMode>
<AuthContext>
<App />
</AuthContext>
</React.StrictMode>
);
一個與另一個無關。 問題是AuthContext
沒有任何RouterProvider
屬性,您嘗試使用的代碼也沒有實際使用 React context Provider
組件和值。
只需使用AuthContext.Provider
組件包裝App
組件並確保傳遞上下文值。
例子:
<AuthContext.Provider value={{ ..... }}>
<App />
</AuthContext.Provider>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.