React-router匹配params和forward按钮
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React-router匹配params和forward按钮相关的知识,希望对你有一定的参考价值。
我使用react-router有以下代码。
componentDidMount() {
const { categories, isFetching, filterCategories, match } = this.props
if (categories.length === 0 && !isFetching) {
this.props.fetchData("categories", requestCategories, receiveCategories)
}
window.onpopstate = ()=> {
filterCategories(match.params.category || "")
}
}
期望match.params.category将始终根据URL中的内容返回类别
实际发生的情况通常很正常但是当我按下前进按钮时,match.params.category返回前一个URL的值。
我在这里做错了还是这个错误?
答案
我使用matchPath
和'location.history'来解决这个问题。这让我可以解决match
a在按下后退或前进按钮时显示错误网址的事实。
import { matchPath } from 'react-router'
class CategoryContainer extends Component {
getCategoryFromUrl = (url) => {
const match = matchPath(url, {path: '/:category', exact: true, strict: false})
return match === null ? "" : match.params.category
}
/**
* @description - trigger a request action
*/
componentDidMount() {
const { categories, isFetching, filterCategories, match, history } = this.props
if (categories.length === 0 && !isFetching) {
this.props.fetchData("categories", requestCategories, receiveCategories)
}
filterCategories(match.params.category || "")
window.onpopstate = () => {
filterCategories(this.getCategoryFromUrl(history.location.pathname))
}
}
以上是关于React-router匹配params和forward按钮的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:使用来自 react-router 的 useParams 时无法读取未定义的属性“匹配”
ZF_react react-router 使用正则匹配路由,Switch路由,嵌套路由的实现 路由保护 NavLink withRouter
如何在 react-router v1.0.0 中填充 this.props.params?
[react-router] React-Router怎么获取URL的参数?
将 react-router 和 react-router-relay 从 v1.x 更新到 v2.x(位置“/”不匹配任何路由)