reactjs - 如何正确设置 React 路由?

标签 reactjs react-router-dom

我正在使用 React 构建应用程序并且我正在使用 React 路由。

我有 3 条主要路线:

  • 如果用户已登录,则显示仪表板
  • 如果用户没有登录,显示登录页面
  • 如果用户点击登录页面上的忘记密码,更改 url 并显示忘记密码页面

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 && <Redirect to="/login" />}时与 {!authenticated && <Login>}它会正确呈现组件,但不会更改 url,也不会显示忘记密码页面。

如何正确设置?

最佳答案

您需要重新订购您的开关:

<Switch>
    <Route path="/login" component={Login} />
    <Route path="/forgotPassword" component={ForgotPassword} />
    <Route path="/" component={App} />
</Switch>

然后,也许让那个 App

{!authenticated ? <Redirect to="/login" /> : (
  <Switch>
    <Route path="/users/:id" component={UserPage} />
    <Route exact path="/users" component={Users} />
    <Route path="/" component={Dashboard />
  </Switch>
)}

(尽管将所有路由保留在顶级路由器/交换机中可能更简单)

关于reactjs - 如何正确设置 React 路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68619397/

相关文章:

javascript - 无法将 React 组件推送到另一个 React 组件中的数组

reactjs - 警告 : validateDOMNesting(…): <a> cannot appear as a descendant of <a>

访问 URL 参数的 ReactJS PrivateRoute

reactjs - React-router 4 不使用查询参数更新 url

xml - 无法使用 React 中的 fetch 获取响应中的 xml 数据

node.js - 在 React 中使用服务器端渲染的最佳方法是什么?

javascript - react-router v6 history.location.search 替换

React Router DOM 的 Typescript 错误

javascript - 当我使用 jsPDF 将 html 转换为 pdf 时丢失内容

javascript - ReactJS 传递回调导致未定义