через пару часов я только что решил проблему, используя localStorage, сохранение данных - это ключ
localstorage
не является хорошим подходом для решения этой проблемы. localstorage предназначен для хранения данных после перезагрузки, но здесь вы хотите сохранить данные после изменения маршрута. (Обратите внимание, что react-dom-router
не перезагружает страницу.)
проблема в том, что, хотя вы настроили redux в своем коде, вы используете useReducer
для состояния ввода пользователя:
const [userInput, setUserInput] = React.useReducer(
(state, newState) => ({...state, ...newState}),
{
bloodType: "",
phoneNumber: "",
}
)
useReducer
- это локальный редуктор для реакции, и он не использует redux
. поэтому ваше состояние ввода является локальным, и оно будет потеряно после изменения маршрута. (в то время как хранилище redux является глобальным и разделяется между компонентами.)
Поскольку ваш компонент уже использует redux
, вы можете вместо этого добавить редуктор для Input
в redux, а затем сопоставить его с реквизитами компонента в функции mapstatetoprops
, чтобы вы могли получить к ней доступ с помощью this.props.userInput
. таким образом вы не потеряете состояние после изменения маршрута, поскольку поставщик хранилища redux является глобальным.