У меня есть компонент страницы Dashboard.js по пути типа "/ dashboard", который позволяет пользователям перемещаться между тремя таблицами, изменяя его состояние, в то время как URL остается неизменным (маршрут не меняется). Я пытаюсь добавить поддержку браузера назад / вперед для этих изменений состояния, но я застрял, пытаясь понять, как перенести изменения состояния в историю и восстановить их в компоненте, когда пользователь нажимает кнопки назад / вперед.
В моем компоненте я попытался добавить this.props.history.push(this.props.location.path, this.state)
к одной из моих основных функций, которая выполняет setState()
, чтобы увидеть, позволит ли это навигацию по кнопке назад. Это определенно добавляет в историю, потому что теперь я могу нажать кнопку назад несколько раз, прежде чем она покинет страницу, но страница выглядит так же (компонент не возвращает старое состояние). Как и где сделать компонент «восстановить старое состояние» при нажатии кнопки «назад»?
Вот базовый пример структуры моего компонента:
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
}
}
Я прошу прощения, если пример кода слишком расплывчатый, мой файл компонента большой, и я не знаю, что уместно включить. Заранее спасибо за помощь.