为什么我的 header 组件不会在上下文更改时更新?
Why won't my header component update when the context changes?
我正在构建一个 React 应用程序,但当 Auth Context Provider 发生更改时,我无法更新我的 Header 组件。但是,仪表板组件按预期工作。如果我硬刷新我的应用程序,我会看到在 Header 中应用了上下文更改,但这是不可取的。
这是我的 Routes.js 文件。
const Routes = () => (
<Router>
<AuthProvider>
<Header />
</AuthProvider>
<Suspense fallback={<LoadingSpinner />}>
<Switch>
<Route exact path='/public/welcome' component={Welcome} />
<Route exact path='/public/about' component={About} />
<AuthProvider>
<PrivateRoute exact path='/secure/dashboard'>
<Dashboard />
</PrivateRoute>
</AuthProvider>
</Switch>
</Suspense>
</Router>
这是我的 Header.js 文件。
const Header = () => {
const { auth, setAuth } = useAuth();
const { isLoggedIn } = auth;
return (
<div id='header'>
{isLoggedIn ? ( <div>I'm logged in!</div> ) : ( <div>I'm NOT logged in!</div> )};
</div>
);
};
export default Header;
出于某种原因,Header 在页面重新加载之前不会反映对 Auth 上下文的更新。
您似乎正在呈现多个身份验证上下文。您可能只需要所有消费者都使用的一个。
示例:
const Routes = () => (
<AuthProvider>
<Router>
<Header />
<Suspense fallback={<LoadingSpinner />}>
<Switch>
<Route exact path='/public/welcome' component={Welcome} />
<Route exact path='/public/about' component={About} />
<PrivateRoute exact path='/secure/dashboard'>
<Dashboard />
</PrivateRoute>
</Switch>
</Suspense>
</Router>
</AuthProvider>
);
我正在构建一个 React 应用程序,但当 Auth Context Provider 发生更改时,我无法更新我的 Header 组件。但是,仪表板组件按预期工作。如果我硬刷新我的应用程序,我会看到在 Header 中应用了上下文更改,但这是不可取的。
这是我的 Routes.js 文件。
const Routes = () => (
<Router>
<AuthProvider>
<Header />
</AuthProvider>
<Suspense fallback={<LoadingSpinner />}>
<Switch>
<Route exact path='/public/welcome' component={Welcome} />
<Route exact path='/public/about' component={About} />
<AuthProvider>
<PrivateRoute exact path='/secure/dashboard'>
<Dashboard />
</PrivateRoute>
</AuthProvider>
</Switch>
</Suspense>
</Router>
这是我的 Header.js 文件。
const Header = () => {
const { auth, setAuth } = useAuth();
const { isLoggedIn } = auth;
return (
<div id='header'>
{isLoggedIn ? ( <div>I'm logged in!</div> ) : ( <div>I'm NOT logged in!</div> )};
</div>
);
};
export default Header;
出于某种原因,Header 在页面重新加载之前不会反映对 Auth 上下文的更新。
您似乎正在呈现多个身份验证上下文。您可能只需要所有消费者都使用的一个。
示例:
const Routes = () => (
<AuthProvider>
<Router>
<Header />
<Suspense fallback={<LoadingSpinner />}>
<Switch>
<Route exact path='/public/welcome' component={Welcome} />
<Route exact path='/public/about' component={About} />
<PrivateRoute exact path='/secure/dashboard'>
<Dashboard />
</PrivateRoute>
</Switch>
</Suspense>
</Router>
</AuthProvider>
);