首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加标头时,不会呈现受保护的路由

添加标头时,不会呈现受保护的路由
EN

Stack Overflow用户
提问于 2022-04-15 06:51:31
回答 1查看 39关注 0票数 0

我正在做一个简单的应用程序,它有一个受保护的路径。

代码如下:

代码语言:javascript
复制
function App() {


return (
    <>
      <Router>
        <Header />
        <Routes>
          <Route path="/" element={<Home />} />
          <Route
            path="/protected"
            element={
              <PrivateRoute>
                <ProtectedExample />
              </PrivateRoute>
            }
          />
          <Route path="/sign-in" element={<Login />} />
        </Routes>
      </Router>
    </>
  );
}

私家路线是:

代码语言:javascript
复制
import { Navigate } from "react-router-dom";
import { useAuthStatus } from "../hooks/useAuthStatus";
import Spinner from "./Spinner";

const PrivateRoute = ({ children }) => {
  const { loggedIn, checkingStatus } = useAuthStatus();

  if (checkingStatus) {
    return <Spinner />;
  }
  return loggedIn ? children : <Navigate to="/sign-in" />;
};

export default PrivateRoute;

保护路线

代码语言:javascript
复制
import React from "react";

const ProtectedExample = () => {
  return <div>ProtectedExample</div>;
};

export default ProtectedExample;

Header.js

代码语言:javascript
复制
import React from "react";
import { Container, Nav, Navbar } from "react-bootstrap";
import { Link } from "react-router-dom";

const Header = () => {
  return (
    <Navbar bg="light" variant="light" fixed="top">
      <Container>
        <Navbar.Brand>
          <Link to="/">Vivans</Link>
        </Navbar.Brand>
        <Nav className="me-auto">
          <Link to="/sign-in" className="me-4">
            Login
          </Link>
          <Link to="/protected">ProtectedRoute</Link>
        </Nav>
      </Container>
    </Navbar>
  );
};

export default Header;

删除App.js中的标头组件时

产出如下:

但是当我在App.js中添加标头组件时

产出如下:

它不会像预期的那样返回ProtectedExample。

为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-15 06:56:20

实际上,它可能是在渲染它。它可能是看不见的,因为CSS的样式。

代码语言:javascript
复制
<Navbar bg="light" variant="light" fixed="top">

在上面的行中,您已经将NavBar设为fixed。所以ProtectedExample会在NavBar后面

参考:https://developer.mozilla.org/en-US/docs/Web/CSS/position

试着像这样改变组件,

代码语言:javascript
复制
const ProtectedExample = () => {
  return <div style="margin-top: 3em">ProtectedExample</div>;
};

这可能会使内容向下显示,使其可见。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71880951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档