【问题标题】:How to update the router state on history.replace in react router?如何在反应路由器中更新history.replace上的路由器状态?
【发布时间】:2018-12-05 07:45:09
【问题描述】:

我的反应路由器有状态isActive(boolean) 值。当我使用 Link 组件重定向到不同的路由时,我可以按如下方式更新状态并且其工作正常:-

<Link to={{
        pathname: "my-home-page",
        search: '?query=abc',
        state: { isActive: true }
}}>Go to Home</Link>

此外,当我使用 history.push 状态时,使用以下代码正确更新:-

history.push({
               pathname: '/template',
               search: '?query=abc', 
               state: {
                isActive: true
               }
});

但是,当我在 javascript 中使用 history.replace 时,我无法更新状态。我正在尝试下面的代码,但它不起作用。

history.replace({ pathname: 'home', search: '?query=abc', isActive: true});

有人知道我做错了什么吗?为什么我的状态在使用history.replace 重定向时没有更新

【问题讨论】:

    标签: javascript reactjs react-router


    【解决方案1】:

    路由器是什么版本的? 在History API中,当我使用它时,第一个参数是路径名(没有对象,只是字符串),第二个参数是状态。

    【讨论】:

      【解决方案2】:

      试试history.replace({ pathname: 'home', search: '?query=abc', state:{isActive: true}});

      【讨论】:

        【解决方案3】:

        history.replaceState(stateObj, title, [url])

        window.history.replaceState(stateObj, title, [url])

        在哪里,

        1. stateObj 可以设置为 null
        2. 标题可以是您想在浏览器中显示的任何标题
        3. url可以是window.location.pathname

        【讨论】:

          猜你喜欢
          • 2018-01-05
          • 1970-01-01
          • 1970-01-01
          • 2018-12-14
          • 2021-01-01
          • 1970-01-01
          • 2021-02-05
          • 2016-06-05
          • 2022-01-18
          相关资源
          最近更新 更多