React-router匹配params和forward按钮

时间:2018-03-05 05:17:42

标签: reactjs react-redux

我使用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的值。 enter image description here

我在这里做错了还是这个错误?

1 个答案:

答案 0 :(得分:0)

我使用matchPath和' location.history'来解决这个问题。 这使我能够解决当按下后退或前进按钮时match似乎有一个不正确的URL的事实。

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))
        }

}