Luk*_*uka 12 reactjs react-router
如何检查通用react-router路径是否与当前位置路径名匹配?
react-router path: /Movies/:id
location.pathname: /Movies/56fa7446bae6eb301e5937f3
Run Code Online (Sandbox Code Playgroud)
我想使用带有菜单按钮的路径路径来设置class ="active".
编辑:
为了澄清,我的应用程序中的路径如下所示:
/Movies/56fa7/watch
Run Code Online (Sandbox Code Playgroud)
而不是像:
/Movies/watch/56fa7
Run Code Online (Sandbox Code Playgroud)
如何检查以前的路线是否有效?
没有<Link>组件可行吗?
/Movies/56fa7/watch是任意的/Movies,<Link>显然不能指向任意位置.所以我们<Link>暂时忽略一下:
在react-router中是否有一个独立的函数或属性来检查是否/Movies/:id/watch有效?
str*_*tss 14
String).Object)或path(String).如果匹配,它将返回此形状的对象:
{
path, // the path used to match
url, // the matched portion of the URL
isExact, // whether or not we matched exactly
params
}
Run Code Online (Sandbox Code Playgroud)
否则你会得到null.
要在组件中使用它,您可以简单地执行以下操作:
import { matchPath } from 'react-router';
// ...
render () {
const isMovieWatchPathActive = !!matchPath(
this.props.location.pathname,
'/Movies/:id/watch'
);
// ...
}
Run Code Online (Sandbox Code Playgroud)
希望它能帮助别人.
我参加聚会有点晚了,但希望对任何有相同问题的人都能有所帮助。通过渲染组件时Route,某些道具会传递给它。这些道具可用于确定哪个路线处于活动状态。
在由呈现的组件中Route,您可以this.props.match.url用来获取浏览器请求的实际URL,也可以this.props.match.path用来获取当前路线的路径模式。
在此处检查工作示例:https : //codesandbox.io/s/20o7q0483j
与此相关的文档可在此处获取:https: //reacttraining.com/react-router/web/api/Route/Route-props
用这个
import { matchPath } from "react-router";
const match = matchPath("/users/123", {
path: "/users/:id",
exact: true,
strict: false
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12271 次 |
| 最近记录: |