如果组件确实更新,如何更新我当前的路由状态

时间:2018-02-27 03:23:19

标签: javascript reactjs react-router

我之前所做的是我使用了router.replace

componentDidUpdate(prevProps) {
    const { searchParams, category, keywords } = this.props;
    const { router } = this.context;

    router.replace({
      pathname: router.location.pathname,
      state: { searchParams, category, keywords },
    });
}

我尝试这样做但它弄乱了我的路由器历史记录,因为它添加了相同路线的另一个历史记录。有没有其他方法可以使用我想要的更新状态更新当前路线,而不会在历史列表中添加更多内容?

我想导航到其他页面,当我按回这个特定路线时,它会保留我在导航到其他路线之前所做的所有搜索细节

2 个答案:

答案 0 :(得分:0)

componentDidUpdate(prevProps) {
    if(this.props !== prevProps) {
     // actions
    }
 }

//尝试这可以帮助你

答案 1 :(得分:0)

您可以在调用react router的replace方法之前调用window.history.replaceState

componentDidUpdate(prevProps) {
    const { searchParams, category, keywords } = this.props;
    const { router } = this.context;

    window.history.replaceState('','',router.location.pathname);
    router.replace({
      pathname: router.location.pathname,
      state: { searchParams, category, keywords },
    });
}