reactjs - 隐藏导航栏功能不起作用 useLocation

标签 reactjs react-router-dom

谁能告诉我为什么这个函数没有给我想要的结果。我错过了一些明显的事情吗?当我控制台日志时

import React from 'react'
import Navbar from './Components/Navbar'
import {BrowserRouter as Router, Route} from 'react-router-dom';
import Home from './Components/Home'
import Welcome from './Components/Welcome'
import About from './Components/About'
import Contact from './Components/Contact'


    function App() {
  return (
    <>
    <useLocation> 
      {({ useLocation }) => { 
        if (useLocation.pathname !== "/") { return <Navbar/>; } }
      } 
    </useLocation>
    <Router>
      <Route exact path="/" component={Welcome}/>
      <Route path="/Home" component={Home}/>
      <Route path="/About" component={About}/>
      <Route path='/Whitepaper' component={WhitePaper}/>
    </Router>
    </>
  );
}

export default App;

最佳答案

我认为您会更好地将 Navbar 组件渲染到 route 并检查 route props 传递的 location .

react-router-dom@5

function App() {
  return (
    <Router>
      <Route
        render={({ location }) => location.pathname !== "/" ? <Navbar /> : null}
      />
      <Route exact path="/" component={Welcome} />
      <Route path="/Home" component={Home} />
      <Route path="/About" component={About} />
      <Route path='/Whitepaper' component={WhitePaper} />
    </Router>
  );
}

react-router-dom@6

如果使用react-router-dom@6,那么您可以创建一个布局路由来渲染NavBar组件和一个用于嵌套的Outlet路线。

示例:

import {
  BrowserRouter as Router,
  Routes,
  Route,
  Outlet,
} from 'react-router-dom';

const NavLayout = () => (
  <>
    <Navbar />
    <Outlet />
  </>
);

function App() {
  return (
    <Router>
      <Routes>
        <Route path="/" element={<Welcome />} />
        <Route element={<NavLayout />}>
          <Route path="/Home" element={<Home />} />
          <Route path="/About" element={<About />} />
          <Route path='/Whitepaper' element={<WhitePaper />} />
        </Route>
      </Routes>
    </Router>
  );
}

关于reactjs - 隐藏导航栏功能不起作用 useLocation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67515297/

相关文章:

reactjs - 样式化的组件会导致不需要的重新渲染

javascript - React 生命周期事件 - 子组件继承旧状态 Prop

reactjs - yarn 升级后 React 中的 Websocket 握手错误

php - 如何通过 react js在php中发布数据

javascript - 外部 Javascript 在 react.js 中不起作用

html - 如何根据CSS中高度的变化设置元素比例?

javascript - React useEffect 不会在路由更改时触发

reactjs - React-Router - 链接、重定向、历史记录

javascript - React-Router 不更新重定向时的 URL

javascript - React 路由器更改链接 url 但不显示组件