使用 React Router 进行条件渲染

2023-11-22

我想在顶部渲染一些带有导航的路线,而在没有任何导航的情况下渲染其他路线(如注册/登录页面)。

render example with react router

对于导航的设置,我有:

const App = () => (
  <Router>
    <div>
      <Nav />
      <div>
        <Route exact path="/" component={Home} />
        <Route path="/account" component={Account} />
        <Route path="/news" component={News} />
      </div>
      <Footer />
    </div>
  </Router>
);

我正在尝试找到使用 React Router 处理此问题的最佳方法(似乎必须使用某种类型的条件来处理? - “如果我当前的路线与这些路线中的任何一个匹配,则像这样渲染,否则渲染此.”)。

Thanks!


你至少有两种可能性:

  1. Use Route“path”属性来测试路径并渲染组件。路径属性接受path.to.regexp表达式。
  2. 将你的组件包裹起来withRouter方法及内部Nav测试路由是否匹配并渲染null否则。

第一个答案:

const App = () => (
  <Router>
    <div>
      <Route path="/(?!signin|signup)" component={Nav}/>
      <div>
        <Route exact path="/" component={Home} />
        <Route path="/account" component={Account} />
        <Route path="/news" component={News} />
      </div>
      <Footer />
    </div>
  </Router>
);

第二个答案:

import { withRouter } from 'react-router'
const NavWithRouter = withRouter(Nav);

const App = () => (
  <Router>
    <div>
      <NavWithRouter/>
      <div>
        <Route exact path="/" component={Home} />
        <Route path="/account" component={Account} />
        <Route path="/news" component={News} />
      </div>
      <Footer />
    </div>
  </Router>
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 React Router 进行条件渲染 的相关文章

  • React router v4 - 在同一路由上渲染两个组件

    我有这些路线
  • React-router-dom 中的 Router 与 Route 有何不同

    在 React Router 中文档 https reacttraining com react router web guides quick start我已经看到它同时导入Route and Router模块来自react router
  • React Router v4 基本名称和自定义历史记录

    我想为我的路由分配一个基本名称 我可以使用 BrowserRouter 来实现 不过 我还想指定自定义历史记录 以便我可以以编程方式导航我的用户 我可以用路由器做到这一点 然而我不能两者都做 是否可以扩展其中一个路由器以支持此功能或围绕其包
  • 在 React 路由器重定向上运行 jquery 脚本

    我正在寻求移植我现有的网站 该网站使用主题来利用反应组件 该主题有很多使 UI 正确渲染的功能 包括几个动画 主题的js导入了很多其他的js库 这意味着我无法编写主题提供的任何 UI 元素的 React 版本 然而 实际上元素可以用作 哑组
  • 如何导航到新页面 React Router v4

    我正在构建一个加密货币市场应用程序来练习reactjs 当应用程序启动时 具有某些属性的货币列表将显示为列表 我需要导航到不同的页面 新页面 Currency组件 而不加载当前页面底部的组件 目前我能够将其呈现在页面底部 但这不是我需要的
  • 如何将 React Router location prop 传递给组件?

    我试图弄清楚如何将 React Router 的 location 属性传递给组件 我有一个这样定义的路线
  • 将react-route-dom中的语法从“Switch”更改为“Routes”,但浏览器中仍然没有显示

    我正在创建一个 Google 克隆 这是我当前的代码 我读到 考虑到反应路由器的更新 我需要将语法从 Switch 更改为 Routes 我这样做了 但我的 这是搜索页面 没有显示在浏览器内部 import React from react
  • 从 HashRouter 中删除 #

    我在用着react router dom对于我的路由 由于我也在使用 GitHub Pages 所以我需要使用HashRouter in my Router jsx like so import React from react impor
  • 在react-router-dom中隐藏某些页面的标题

    有没有办法可以仅隐藏 React Router 中某些路由的页面标题 我现在的问题是我的App组件呈现我的Main组件 其中包含我的BrowserRouter 和我的Header呈现在我的App组件 所以我无法根据路由路径渲染标题 这是一些
  • 在 Apache 服务器上处理 React Router

    我在重定向 Apache 服务器上 React 生成的 URL 路径的 404 错误时遇到问题 设想 假设我有一些由 React Router 生成的 URL www somewebsite com apps Problem 如果最终用户单
  • Enzyme 和 React 路由器:如何使用 useHistory 浅层渲染组件

    我一直在尝试用以下方式渲染组件shallow 由enzyme 该组件正在使用useHistory from react router dom const baseMatch match lt id string gt path url pa
  • React router v4 嵌套路由相对路径

    我有一个带有 React Router v4 的组件到另一个组件 我想在第二个组件中添加另一个路由 这是主要路线 const Dashboard gt return div div
  • ReactJs - 是否可以根据组件树的状态设置 url 或查询字符串

    我有一个组件 其中有多个嵌套组件 特别是选项卡 药丸等 任何时候都无法看到所有组件 我希望能够根据 URL 参数 或 URL 设置它们的默认状态 属性 但我不清楚如何在 React 中实现这一点 例如 我有一个带有两个选项卡的组件 引导程序
  • 如何在 React js 上使用历史记录重定向到另一个页面?

    我在前端使用 Reactjs 并在后端使用 Laravel 开发了一个注册页面 我希望当我单击注册按钮时 它将被重定向到我的登录页面 我的注册组件是 handleSubmit event gt event preventDefault co
  • React router + redux 导航回来不会调用 componentWillMount

    目前 我在容器组件的生命周期方法 componentWillMount 中预加载来自 api 的数据 componentWillMount const dept course this props routeParams this prop
  • 反应超出最大调用堆栈大小

    如果用户未登录 我尝试将用户重定向到 TrapPage 这是我的代码 function requireAuth nextState replace if auth loggedIn replace pathname trap export
  • 一个 Next.js 路由中的两个不同子域

    我想使用构建一个新平台Next js https nextjs org React js https reactjs org and 反应路由器 https reacttraining com react router web guides
  • React Router LINK不传递参数

    我有一个 React 有声读物搜索应用程序 它按作者姓氏从 Librivox 获取数据并显示书籍列表 列表中的每个项目都有一个链接 该链接依次转到显示的单独的完整图书数据组件 该特定书籍 或用户从列表中选择的任何书籍 的所有数据 在我的一生
  • React Router v4 的优点

    除了能够在 NavLink 上设置 activeClassName 和 activeStyle 之外 还有什么理由使用NavLink over Link在您的网站上不需要活动状态 类的非导航元素 即不是页眉或页脚中的主导航 上创建指向其他路
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com

随机推荐

  • gcc 4.8.1 中的 C++11:复制构造函数的列表初始化不起作用

    我鼓励这个问题 如果我有 class A public int main A a A b a 海湾合作委员会给出 move cc 在函数 int main 中 move cc 15 7 错误 A 的初始值设定项太多 A b a 但是当我使用
  • 如何使用express js创建一个简单的html服务器

    我是 node js 新手 我想创建一个简单的express js 静态文件服务器 但我有一些问题 我已经在全球安装了express js 4 2 如下所示 npm install g express generator 我在 httpsr
  • 如果被少于五个连续零包围,则将向量中的零更改为一

    我有一个向量0s and 1s 并想要识别字符串所在的索引0s 被包围1s 如果数量0之间的1s 小于或等于 5 我想将这些零更改为1s 这是一个例子 gt x lt c 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0
  • 如何调度一个超时的 Redux 操作?

    我有一个操作可以更新我的应用程序的通知状态 通常 此通知将是某种错误或信息 然后 我需要在 5 秒后调度另一个操作 将通知状态返回到初始状态 因此没有通知 其背后的主要原因是提供通知在 5 秒后自动消失的功能 我没有运气使用setTimeo
  • 在bash shell脚本中如何将字符串转换为数字[重复]

    这个问题在这里已经有答案了 嘿我想将字符串转换为数字 x 0 80 I would like to convert x to 0 80 to compare like such if x gt 0 70 then echo x gt gt
  • 如何使用 Jackson 反序列化 JS 日期?

    我从 ExtJS 获取格式为以下的日期字符串 2011 04 08T09 00 00 当我尝试反序列化此日期时 它将时区更改为印度标准时间 为时间添加 5 30 这就是我反序列化日期的方式 SimpleDateFormat dateForm
  • npm install fsevents 错误

    你好 我正在尝试安装 fsevents whitchnpm 因此我使用以下版本 节点 4 2 6 国家公共管理 3 5 2 操作系统 Ubuntu 16 04 LTS 我正在执行该语句 Edited npm install fsevents
  • 使用仪器解决内存不足警告

    我正在尝试使用仪器来解决一些内存不足的情况 我可以看到物理内存可用监视器中的内存消耗下降到几 MB 尽管分配显示所有分配约为 3 MB 总体字节为 34 MB 自从我使用 NSOperationQueue 将一些操作移动到单独的线程后 我就
  • NHibernate无状态会话插入速度慢

    这几天我一直致力于提高 NHibernate 插入性能 我读过很多帖子 例如this one that 无状态会话每秒可以插入 1000 2000 条记录 但是 它可以插入 1243 条记录的最佳时间对我来说超过 9 秒 var sessi
  • smtp;550 访问被拒绝 - HELO 名称无效(请参阅 RFC2821 4.1.1.1)

    我正在运行 Windows Server 2008 R2 但我收到一些域拒绝的 smtp 邮件 为了测试它 我将一个文本文件放入 C inetpub mailroot Pickup 目录中 内容如下 From email protected
  • 带有双引号参数的 exec

    我想执行findWindows 命令使用exec包 但 Windows 正在做一些奇怪的转义 我有类似的东西 out err exec Command find SomeText Output 但这会引发错误 因为 Windows 正在将其
  • 将分数转换为 html 实体[重​​复]

    这个问题在这里已经有答案了 我们在数据库中存储了一些分数信息 例如3 4 5 除了进行搜索和替换之外 是否有任何内置 PHP 函数可以自动将它们转换为正确的 html 实体 您可以使用htmlentities 函数 这会将所有特殊字符替换为
  • 检测用户何时关闭软键盘

    我的视图中有一个 EditText 小部件 当用户选择 EditText 小部件时 我会显示一些说明并出现软键盘 我使用 OnEditorActionListener 来检测用户何时完成文本输入 然后关闭键盘 隐藏指令并执行某些操作 我的问
  • 有什么方法可以知道 php 脚本是否在 cli 模式下运行?

    或者反过来 有没有办法知道 php 脚本是否正在 Web 服务器内运行 http www php net manual en function php sapi name php function is cli return php sap
  • Java 客户端应用程序中的 Ajax 调用 [重复]

    这个问题在这里已经有答案了 可能的重复 如何使用 Servlet 和 Ajax 我在 Javascript 中使用以下代码来进行 Ajax 调用 function getPersonDataFromServer ajax type POST
  • 为什么 Node.js 一次只处理六个请求?

    我们有一个 Node js 服务器 它实现了 REST API 作为中央服务器的代理 而中央服务器的 REST API 略有不同 而且不幸的是不对称 我们的客户端运行在各种浏览器中 要求节点服务器从中央服务器获取任务 节点服务器从中央服务器
  • 将范围变量连接到角度指令表达式中的字符串中

    我在 Angular ng click 指令中使用作用域方法 如下所示 a obj val1 obj val2 a 这里的问题是 obj val1 和 obj val2 被解释为传递给表达式中的方法的字符串的一部分 我需要将它们作为变量进行
  • Java方法使用反射分配对象字段值

    我想知道 Java 中是否可以有类似下面的内容 public class MyClass private String name private Integer age private Date dateOfBirth constructo
  • 如何自动回答 y(kill-matching-buffers 询问我是否应该终止修改的缓冲区)?

    在 Emacs 中 如何杀死与正则表达式匹配的缓冲区 Edit 我该如何回答y自动地 kill matching buffers询问我是否应该杀死修改过的缓冲区 像这样的东西吗 defun bk kill buffers bfrRgxp i
  • 使用 React Router 进行条件渲染

    我想在顶部渲染一些带有导航的路线 而在没有任何导航的情况下渲染其他路线 如注册 登录页面 对于导航的设置 我有 const App gt