javascript - 是否有使用 react 路由器隐藏组件的最佳实践方法?

标签 javascript node.js reactjs react-router

为了隐藏主页组件上的导航栏,我正在执行以下操作

const NavbarComponent = (props) => {
    console.log(props);

    if (props.match.path === '/') {
        return null;
    } else
        return (

它工作正常,我需要访问路由器,以便我可以将人员发送到依赖于 Prop 对象的位置,是否有更好的方法来做到这一点,以便我将所有路由器逻辑放在同一个地方? p>

这是我的路由器的当前状态

    return (
        <div>
            <Router>
                <Route component={Navbar} />

                <Switch>
                    <Route exact path="/" component={Home} />

                    <Route exact path="/api/:city/electronics" component={Electronics} />
                    <Route exact path="/api/:city/labour" component={Labour} />

                    <Route exact path="/api/posts/item/:id" component={ItemDetails} />

                    <Route exact path="/create/:city/:category" component={CreatePost} />
                </Switch>
            </Router>
        </div>
    );


感谢您的宝贵时间。

最佳答案

我不确定我是否理解为什么您的 NavBar 组件位于它自己的 Route 中。 Router 中包含的任何组件都可以访问整个 Router api,包括 Link - 它们不需要是 Route 即可这样做。

我建议使用该组件包装包含 NavBar 的所有路由。然后,路线将显示为导航栏组件的子组件。

这是一个简化的示例:

// App.js
return (
    <div>
      <Router>
        <Switch>
          <Route exact path="/" component={Home} />
          <NavBar>
            <Route exact path="/electronics" component={Electronics} />
            <Route exact path="/labour" component={Labour} />
          </NavBar>
        </Switch>
      </Router>
    </div>
  );

//NavBar.js
return (
    <>
      <div>
        <Link to="/electronics">Electronics</Link>
        <Link to="/labour">Labour</Link>
      </div>
      <div>{props.children}</div>
    </>
  );

codesandbox

关于javascript - 是否有使用 react 路由器隐藏组件的最佳实践方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60687194/

相关文章:

node.js - Node 代理网络套接字如何检查

javascript - 如何在 Node 环境中运行 JavaScript 代码片段?

javascript - 如何将图像上传到 ExpressJS 服务器

javascript - 如何在 Angular 6 应用程序中使用带有 CKEditor 4 的图像上传插件?

php - 带有while循环的mysql Node js动态数组

reactjs - 如果将 Font Awesome 放置在串联文本旁边,则会呈现 "[object object]"

javascript - 可以用链式表示法替换 Object.keys(myObj) 吗?

javascript - 将对象转换为数组,同时删除非数字字段名称

javascript - 导轨3 : how to request a confirmation before performing a controller action

javascript - 将 HTML 解析为异步调用的响应