【发布时间】:2021-08-02 09:41:05
【问题描述】:
我正在使用 React 构建一个应用程序,并且我正在使用 React 路由。
我有 3 条主要路线:
- 如果用户已登录,则显示仪表板
- 如果用户未登录,则显示登录页面
- 如果用户在登录页面点击 ForgotPassword,更改 url 并显示 ForgotPassword 页面
index.js
ReactDOM.render(
<Provider store={store}>
<BrowserRouter>
<Suspense fallback={<div>Loading...</div>}>
<div>
<Switch>
<Route path="/" component={App} />
<Route path="/login" component={Login} />
<Route path="/forgotPassword" component={ForgotPassword} />
</Switch>
</div>
</Suspense>
</BrowserRouter>
</Provider>,
document.getElementById('root')
);
App.js
{this.props.location.pathname === "/" && <Dashboard />}
<Route exact path="/users" component={Users} />
<Route path="/users/:id" component={UserPage} />
{!authenticated && <Redirect to="/login" />}
当我尝试打开"/" 时,它会重定向到"/login",但它不会呈现Login 组件。
当我用{!authenticated && <Login>} 替换{!authenticated && <Redirect to="/login" />} 时,它会正确呈现组件,但它不会更改 url,也不会显示 ForgotPassword 页面。
如何正确设置?
【问题讨论】:
-
您是否在所有路由中尝试
<Route exact path="/" component={App} />和exact?