我在这个网址上:
/path1/path2
然后:
<Link to="path2/path3" />
使用此代码,地址栏中的地址将更改为:
/path1/path2/path3
似乎有效:它已到达最后一个
/
,并为此添加了新路径。但是,实际上,尽管它更改了地址栏中的网址,但不会进行导航。看起来必须给链接提供绝对URL?
最佳答案
在react-router v4中支持相对路径。 history
库“像浏览器一样”解析相对路径,以便
<Link to="two" />
或一个
history.push({ pathname: '..', search: 'foo=bar' });
网址
site/path/one
处将重定向到site.com/path/two
和site.com/three?foo=bar
。但是
NavLink
不适用于相对路径名,因为它不能解析它自己的相对路径(这很简单)。但是,为此有一些社区软件包,但我尚未对其进行测试。或者,这就是我的工作,您可以从父路由(或从上下文
match
)获取一个router.route.match
对象,并使用它在NavLink中构建相对的to
:<NavLink to={`${match.url}/three`} />
这样,您的组件可以独立于其父路由运行。
关于url - react 路由器是否支持相对链接?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36312453/