reactjs - 使用 React-Bootstrap 中的 Nav.Link 时如何避免重新加载整个应用程序?
问题描述
当我使用以下链接时,我的 React 应用程序按预期工作,这意味着如果我单击一个链接,该应用程序不会完全重新加载,而只是改变其前端外观。
<Link to="/about">About</Link>
现在我想使用来自 React-Bootstrap 的导航栏。但是,如果我单击导航栏,我的整个网络应用程序会重新加载,这是我不想要的。
这是我认为我的代码的相关部分:
<Router>
<Navbar bg="dark" variant="dark">
<Navbar.Toggle aria-controls="basic-navbar-nav" />
<Navbar.Collapse id="basic-navbar-nav">
<Nav className="mr-auto">
<Nav.Link to="/about">Page 1</Nav.Link>
<Nav.Link href="/about2">Page 2</Nav.Link>
</Nav>
</Navbar.Collapse>
</Navbar>
<hr />
<Switch>
<Route exact path="/">
<Home />
</Route>
<Route path="/about">
<About />
</Route>
<Route path="/about2">
<About />
</Route>
<Route path="/dashboard">
<Dashboard />
</Route>
</Switch>
</Router>
当我使用“to”时,它甚至根本不起作用。当我使用“href”时,参考有效,但整个网络应用程序重新加载 - 这并不是我真正想要的。我怎样才能解决这个问题?提前致谢!
解决方案
为了获取React-router
路由更改,您必须使用Link
库附带的组件或以编程方式处理重定向。幸运的是,React-bootstrap
在它的大部分组件中都提供了一个 render prop 来指定如果你不想使用默认值,你想要渲染哪个组件或元素。
所以如果你试试这个
import { Link } from 'react-router-dom';
<Nav.Link as={Link} to="/about">Page 1</Nav.Link>
您的导航应该可以正常工作。
推荐阅读
- javascript - 无法从另一个文件进行查询(connection.query 不是函数)
- javascript - 如何在 Angular 中使用无需订阅的 observable
- python - 使用 Zeep 和请求进行抢先式身份验证
- node.js - 续集:从 v4 升级到 v5 出现错误:无法读取未定义的属性“字段”
- java - 如何为多个请求实例化 1 个连接类?
- r - 根据字符串中字符的位置提取子字符串
- javascript - JavaScript 中类的提升是如何工作的?
- java - 使用 TestNG dataProvider 和 dependsOnGroups 来设置执行顺序
- bootstrap-4 - 使用 ng-bootstrap 和 Angular 8/Bootstrap 4 标记输入
- javascript - 重构 forEach 循环最有效的功能方式是什么?