Передача данных от ребенка к родителю при переходе назад с реагирующим маршрутизатором? - PullRequest
0 голосов
/ 13 января 2020

Я знаю, что могу передавать данные при навигации вперед с Link, Route ..

<Route
  path="/release"
  exact
  render={() => <ManagedEventsList pages={this.state.pages} />}
/>

, здесь: https://tylermcginnis.com/react-router-pass-props-to-components/

, но Можно ли передавать данные также при нажатии кнопки «Назад» в браузере?

В этой статье показано, как перейти из состояния с child на parent без реагирующего маршрутизатора. Будет ли он работать с реагирующим маршрутизатором?

https://dev.to/zeyadetman/how-to-pass-state-between-components-in-reactjs-2pg1

1 Ответ

1 голос
/ 13 января 2020

С react-router-dom, нет, невозможно передать состояние с обратной навигацией. Объект history может отправлять состояние только с действиями push или replace. Действия go обновляют только указатель на текущее местоположение в стеке истории, т.е. go(-1) эквивалентно goBack().

Если вам нужно сохранить данные, соотнесенные со стеком истории, или если вам нужно чтобы также «отправлять» данные во время обратной навигации, вам понадобится библиотека за пределами react-router-dom. Redux был бы неплохим вариантом, если вы уже используете его, чтобы сохранить в состоянии либо данные, использованные во время навигации, либо наряду с выполнением history.goBack(), чтобы также отправлять действие для сохранения некоторых данных «goBack» в состоянии, которое необходимо получить. через проверку на предыдущей странице. Другие, такие как Redux Sagas или Thunks, позволяют создавать побочные эффекты вместе с обновлением состояния. С их помощью вы можете создать свое собственное действие goBackWithState, которое сохраняет некоторое состояние в вашем состоянии Redux , а затем выдает обратную навигацию.

response-router-dom history

...