javascript - React 导航栏在屏幕中,即使它不在路由器上

标签 javascript html css reactjs react-router

我们正在尝试实现一个 React 元素,该元素具有 3 种不同类型的同一应用程序,用于 3 种不同的目的。可以把它想象成用户将选择在主屏幕上使用哪个。所有 3 种类型具有相似但不同的页面结构、不同的导航栏等。

我在主页上使用了一个路由器,他们可以在其中选择他们想要使用的应用程序类型,路径为“/”,并为不同类型的应用程序使用不同的路由器,因为它们的导航栏等是不同的。但是导航栏出现在主屏幕中,即使它不存在于路由器中也是如此。

我知道这听起来很复杂,但我会用代码片段和屏幕截图来展示它。

App.js

function App() {
  return (
    <>
      <Router>
        <Routes>
          <Route path = "/" exact element={<CirclePage />}/>
        </Routes>
      </Router>

      <Router>
        <Routes>
          <Route path = "/homepage-clubs" exact element={<HomepageClubs />}/>
        </Routes>
      </Router>

      <Router>
        <Navbar/>
        <Routes> 
          <Route path='/homepage' exact element={<Homepage />}/> 
          <Route path='/events' exact element={<Events/>}/>
          <Route path='/clubs' exact element={<Clubs/>}/>
          <Route path='/contact' exact element={<Contact/>}/>
          <Route path='/notifications' exact element={<Notifications/>}/>
          <Route path='/profile' exact element={<Profile/>}/>
        </Routes>
      </Router>
    </>
  );
}
export default App;

Navbar是我在react中写的navbar。

主屏幕是这样的atm:application screen at first initialization

我不知道为什么屏幕下方有一个导航栏。我可能不了解路由器的工作原理,我不确定。我需要那个导航栏消失,因为每种类型的应用程序都会有不同类型的导航栏(我会为它们创建不同的导航栏)并且导航栏不应该在主屏幕上可见。可能是什么问题?

最佳答案

您同时渲染所有三个路由器,第三个包含 Navbar 组件,它也始终被渲染。您应该使用单个路由器来呈现所有路由。如果你想为特定路线使用不同的布局,那么你可以使用包装器组件来呈现 Navbar。将最后一组路由呈现为通用路由,该路由与 Navbar 一起匹配任何未更具体匹配的内容。

function App() {
  return (
    <>
      <Router>
        <Routes>
          <Route path="/" element={<CirclePage />} />
          <Route path="/homepage-clubs" element={<HomepageClubs />} />
          <Route
            path="*"
            element={
              <>
                <Navbar />
                <Routes>
                  <Route path="/homepage" element={<Homepage />} />
                  <Route path="/events" element={<Events />} />
                  <Route path="/clubs" element={<Clubs />} />
                  <Route path="/notifications" element={<Notifications />} />
                  <Route path="/profile" element={<Profile />} />
                </Routes>
              </>
            }
          />
        </Routes>
      </Router>
    </>
  );
}

关于javascript - React 导航栏在屏幕中,即使它不在路由器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70455966/

相关文章:

javascript - 如何使用 JavaScript/JQuery 显示表单中所有 HTML 输入值的摘要?

c# - 更改 .asp 文件样式 (css)

css - 左边有图片的div

javascript - 如何在hammer.js中将缩放焦点从图像中心更改为两次触摸的平均值

javascript - 使用 Javascript 离开窗口时如何暂停 setTimeout?

html5 元标记缓存控制不再有效?

jquery - 与 jQuery 选择器一起使用的 CSS 类命名的最佳实践

javascript - Webpack 2 非内联源 map 未在 chrome 中显示

javascript - React.js 和 webpack 2,需要一个解决方案

javascript - 单击提交后单选按钮不生成操作