当前位置: 首页 > 知识库问答 >
问题:

react中是否有基于网站路径隐藏组件的功能?

方建明
2023-03-14

在我的react应用程序中,我当前有:

<Router>
    <div class Name="App">
      <Route path="/" exact component={PersonList} />
      <Route path="/rules" exact component={RulesPage} />
      <Route path="/roles" exact component={RolesPage} />
      <Route path="/test" exact component={Test} />
      <Footer />
    </div>
  </Router>

然而,我希望页脚元素被隐藏,如果路由路径是"/test"这将是一个干净得多比写:

<Route path="/roles" exact component={Footer} />
<Route path="/rules" exact component={Footer} />
<Route path="/" exact component={Footer} />

如果有人知道这样做的功能,将不胜感激。

共有3个答案

唐炜
2023-03-14

如果您不熟悉HOC模式,另一个选项是呈现

萧晔
2023-03-14

在您的页脚组件中,您可以检查window.location.pathname是否包括/test,然后返回null

闻人栋
2023-03-14

您可以创建一个高阶组件来呈现带有页脚的组件,然后可以在除/test之外的所有路径上呈现该高阶组件。

高阶组件仅获取一个应与页脚组件一起显示的组件,并返回另一个组件,该组件仅呈现包装好的组件以及页脚组件。

function WithFooter(WrappedComponent) {
  const EnhancedComponent = (props) => {
    return (
      <>
        <WrappedComponent {...props} />
        <Footer />
      </>
    );
  };

  return EnhancedComponent;
}

在此之后,您不需要导出PersonList组件,而是需要导出通过调用WithFooter高阶组件返回的组件,如下所示:

function PersonList() {
  ...
}

export default WithFooter(PersonList);

您需要对其他应该用页脚呈现的组件也做同样的事情。

使用高阶组件所有设置,您的管线定义无需更改:

<Router>
   <Route path="/" exact component={PersonList)} />
   <Route path="/rules" exact component={RulesPage} />
   <Route path="/roles" exact component={RolesPage} />
   <Route path="/test" exact component={Test} />
</Router>

另一种解决方案是在使用窗口检查URL后有条件地呈现页脚组件。位置useParams()钩子由react router dom提供,但是useParams()仅在使用react router呈现组件时才起作用。在您的情况下,您需要window.location

 类似资料:
  • 我想检查一个链接的href是否是网站路径之后的文件。代码如下: 有没有办法让它检查在“http://127.0.0.1:5500”后面是“/”还是“/index.html”?谢谢你!

  • 新反应: 我有一个 组件,我只想在用户访问特定页面时隐藏该组件。 App.JS: main.js:

  • 我对React Native非常陌生,我想知道如何隐藏/显示组件 这是我的测试用例: 我有一个组件,我想要的是当输入获得焦点时显示,然后当用户按下取消按钮时隐藏。 我不知道如何“访问”TouchableHighlight组件,以便在我的函数中隐藏/显示它 另外,如何从一开始就隐藏按钮?

  • 问题内容: 我正在尝试按照以下说明进行操作:https ://wiki.jenkins- ci.org/display/JENKINS/Running+Jenkins+behind+Apache 将我的Jenkins服务器设置为出现在http:// myhost / jenkins上 。它可以工作,但是Jenkins网站认为http:// myhost /是jenkins /的根。 我相信此问题是

  • 问题内容: 在花了一些时间学习React之后,我了解了创建组件的两个主要范例之间的区别。 我的问题是,什么时候应该使用哪个?为什么?一个人相对于另一个人的利益/取舍是什么? ES6课程: 功能性: 我认为只要没有状态可以由该组件操纵,功能就可以了,是吗? 我猜如果我使用任何生命周期方法,最好使用基于类的组件。 问题答案: 你有正确的主意。如果您的组件只做一些道具和渲染,那么功能就可以了。您可以将它

  • 在花了一些时间学习React之后,我理解了创建组件的两种主要模式之间的差异。 我的问题是什么时候我应该使用哪一个,为什么?一种方法与另一种方法相比有哪些好处/利弊? ES6类: 功能: 我认为只要没有状态可被该组件操纵,就可以正常工作,但就这样吗? 我想如果我使用任何生命周期方法,最好使用基于类的组件。