我有一个Dashboard.js页面组件,位于路径"/dashboard",它通过改变其状态让用户在3个表格之间导航,同时URL保持不变(路由没有改变)。我正在尝试为这些状态更改添加浏览器的前进/后退按钮支持,但我被困在如何将状态更改推送到历史记录并在用户单击后退/前进按钮时在组件中恢复它们的问题上。
在我的组件内部,我尝试在一个执行setState()的主要函数中添加this.props.history.push(this.props.location.path, this.state)来查看是否允许使用后退按钮进行导航。它肯定会添加到历史记录中,因为现在我可以在离开页面之前按下几次后退按钮,但是页面看起来相同(组件没有恢复旧状态)。我应该在哪里以及如何让组件在按下后退按钮时“恢复旧状态”?
以下是我的组件结构的基本示例:
在我的组件内部,我尝试在一个执行setState()的主要函数中添加this.props.history.push(this.props.location.path, this.state)来查看是否允许使用后退按钮进行导航。它肯定会添加到历史记录中,因为现在我可以在离开页面之前按下几次后退按钮,但是页面看起来相同(组件没有恢复旧状态)。我应该在哪里以及如何让组件在按下后退按钮时“恢复旧状态”?
以下是我的组件结构的基本示例:
class Dashboard extends Component {
state = {
// table data, current table, etc.
}
componentDidMount() {
// get records from db, set state
}
navigateExample() {
// various functions like this one set state,
// basically navigating between tables
this.props.history.push(this.props.location.path, this.state) // <--here?
this.setState({ table: newTable })
}
render() {
// renders different table components depending on state
}
}
如果示例代码过于模糊,我很抱歉,我的组件文件很大,我不知道包含什么相关内容。提前感谢您的帮助。