Я создаю формы регистрации / логина / забытого пароля, используя приставку.Также я использую response-intl для многоязычной поддержки.Изменение языка вызывает повторное рендеринг компонентов и сбрасывает формы.
Я хотел бы сбросить форму только при изменении местоположения, но мое решение кажется мне не идеальным
1), если я использую destroyOnUnmount: true
случай следующий: когда пользователь начал заполнять, например, регистрационную форму, а затем решил сменить язык -> форма уничтожается при размонтировании и все поля сбрасываются.2) если destroyOnUnmount: false
все в порядке, то при изменении языка данные формы не уничтожаются.Но если изменить маршрут и затем снова открыть форму регистрации - предыдущие данные все еще присутствуют.
initialValues не установлены
Поэтому я решил установить destroyOnUnmount: false
Затем вКомпонент приложения я вызываю действие, если местоположение меняется
// reset redux forms on route change
componentDidUpdate(prevProps) {
if (this.props.location !== prevProps.location) {
this.props.resetFormsAction();
}
}
, а затем в саге слушаю действие
export function* resetForms() {
try {
const forms = yield select(getForms);
yield all(Object.keys(forms).map(form => put(reset(form))));
} catch (e) {
console.error(e);
}
}
const commonSagas = [
takeEvery(RESET_FORMS, resetForms),
];
export default commonSagas;
селектор
export const getForms = (state: AppStore) => state.form;
Это решение работает нормально, ноесть какая-либо другая реализация для сброса / уничтожения формы только при изменении местоположения, но не при нажатии на кнопку изменения языка
Я нашел похожий вопрос , но он мне не помог