React Router:替换位置状态然后返回,位置状态未定义

Posted

技术标签:

【中文标题】React Router:替换位置状态然后返回,位置状态未定义【英文标题】:React Router: Replace location state then goBack, location state is undefined 【发布时间】:2020-05-08 03:35:55 【问题描述】:
this.props.history.replace(
  state: 
    from: 'dashboard'
  
);

this.props.history.goBack();

更新this.props.location.state后使用this.props.history.goBack()this.props.location.state的值是undefined。但是

this.props.history.push(
  pathname: '/',
  state: 
    from: 'dashboard'
  
);

有效并保留this.props.location.state 的值。

知道如何更新this.props.location.state 然后使用this.props.history.goBack

【问题讨论】:

【参考方案1】:

根据官方文档:

push(path, [state]) - (function) 将新条目推送到历史堆栈中 replace(path, [state]) - (function) 替换历史堆栈上的当前条目 go(n) - (function) 将历史堆栈中的指针移动 n 个条目 goBack() - (function) 等价于 go(-1) goForward() - (函数) 等价于 go(1)

如果你想使用goBack(),最好使用this.props.history.push()

为了更好地了解,您可以访问react-router-dom、history

【讨论】:

是的。但是使用push 代替goBack 会弄乱routing flow,因为它会将一个新条目推送到历史堆栈中,而不是删除当前条目以返回到前一个条目。 我的 location.state 未定义。我在 history.replace() 中也包含了 state,它解决了我的问题。谢谢。

以上是关于React Router:替换位置状态然后返回,位置状态未定义的主要内容,如果未能解决你的问题,请参考以下文章

React-Router 组件在转换时卸载

如何在 React Router v5 中更新 URL 并替换历史状态而不重新渲染整个应用程序?

React Router:只更新一个查询参数而不是全部替换

React Router DOM 无法读取位置状态

react-router 如何在页面刷新时保持位置状态?

如何使用 React Router 维护路由之间的状态?