reactjs - 如何不在登陆(登录页面)页面上呈现标题,但总是在 react-router v6 中的所有其他页面上呈现标题?

标签 reactjs react-router-dom

我正在尝试创建一个没有标题的登陆页面(登录)的网站,但是一旦用户登录,所有后续页面都会有标题。我尝试了以下但语法不正确,因此不起作用。请问有人可以建议吗?

import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Login from '..path for landing';
import component1 from '..path for component1';
import component2 from '..path for component2';

const App = () => {
  return (
    <Router>
      <Routes>
        <Route exact path="/" element={<Login />} />
        
        <Header />
        
        <Route path="/component1" element={<component1 />} />
        <Route path="/component2" element={<component2 />} />
      </Routes>
    </Router>
  );
}

最佳答案

创建一个布局组件,用于呈现 Header 组件和一个 Outlet 组件,用于呈现嵌套路由。

例子:

import { Outlet } from 'react-router-dom';

const AuthLayout = () => {
  // ... perhaps some authentication logic to protect routes?
  return (
    <>
      <Header />
      <Outlet />
    </>
  );
};

...

const App = () => {
  return (
    <Router>
      <Routes>
        <Route path="/" element={<Login />} />
        <Route element={<AuthLayout />}>
          <Route path="/component1" element={<component1 />} />
          <Route path="/component2" element={<component2 />} />
        </Route>
      </Routes>
    </Router>
  );
}

关于reactjs - 如何不在登陆(登录页面)页面上呈现标题,但总是在 react-router v6 中的所有其他页面上呈现标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71732926/

相关文章:

javascript - componentDidMount()不会被调用,而只会在特定情况下被调用

javascript - 在 React 组件上使用包装函数通过浏览器路由器验证用户登录时如何修复 "TypeError: Object(...) is not a function"

css - 如何创建自定义单选按钮?

javascript - 当我创建 setupProxy.js 时,本地主机拒绝连接

javascript - React Router 在重定向到具有不同 slug 的同一页面时触发重新加载/重新安装组件

javascript - React Router v6 错误 : All component children of <Routes> must be a <Route> or <React. 片段>

React-router 6 导航到使用参数

javascript - overflow-x : hidden doesn't work, 而是在滚动时在右侧添加填充

javascript - React 详细信息列表始终为空

css - 禁用 Material UI 默认样式