与 react-router 的编程相对链接
Programmatic relative links with react-router
有人设法找到一种好方法,如何以编程方式导航到带有 react-router 的相对链接?
我已经将反应路由器相对链接用于声明性链接,但我找不到以编程方式执行此操作的好方法。
我知道可以使用解析路径名和router.push(…)
手动完成,但这需要访问location
,这仅在路由处理程序组件上可用。我的组件在树的深处,因此我想避免所有接线回到顶部。
window.location.pathname
获取位置然后通过withRouter
使用router.push
的正确方法吗?
目前我将其用作实用程序函数:
import resolvePathname from 'resolve-pathname';
function getPathnameFromRelativeLocation(relativeLocation) {
let {pathname} = window.location;
let basePath = pathname.endsWith('/') ? pathname : pathname + '/';
return resolvePathname(relativeLocation, basePath);
}
在 React 组件的事件处理程序中:
// Current path is `/books/123`
let path = getPathnameFromRelativeLocation('write-review');
this.props.router.push(path);
// Current path is `/books/123/write-review`
react-router
3.0 现在提供了上下文location
,因此现在可以轻松地从那里获取它。
https://github.com/ReactTraining/react-router/issues/3325
如果您使用的是浏览器历史记录 简直就是
browserHistory.push('/yourRelativePath');
为此,请确保您拥有最新的反应路由器和
import { browserHistory } from 'react-router';
相关文章:
- 绝对链接/相对链接均未获胜't在菜单中工作
- 相对链接在 HTML 页面上不起作用
- 相对链接和backbone.js路由器
- 带有JS点击相对路径的网页URL链接
- jQuery或Javascript根据环境动态更改链接(相对/站点相对/绝对)
- 在javascript / php中使相对链接绝对
- jQueryMobile中的程序化(相对于基于链接的)导航
- 更改字符串中包含的相对绝对链接
- 在jQuery中使用相对路径识别链接
- 将js文件中的相对链接设置为来自文件源而不是域
- javascript为所有链接动态添加相对路径
- 用完整的url替换根相对链接
- 查看当前页面是否等于相对链接- JavaScript
- CodeIgniter追加URI段与相对链接
- 如何阻止Chrome在复制/粘贴时将相对链接转换为绝对链接
- 与 react-router 的编程相对链接
- Delphi的执行命令问题,图像的相对链接
- 如何在javascript中将所有“链接rel样式表”相对路径转换为绝对路径
- 在选择器中使用相对元素或链接查询选择器之间的区别
- JSONLoader对象链接- URL工作正常,相对路径不行