@lexstile

Как сделать редирект через react router dom в асинхронном экшне?

Нужно перенаправить пользователя после успешной регистрации на страницу входа.
Хотелось бы обойтись возможностями реакт роутера, но другие варианты тоже рассматриваю.
Желательно, не передавая history (useHistory) аргументом в createUser.
package.json
{
"react-router-dom": "^5.3.0"
}

Register.jsx
const onSubmit = ({ phone, email, password }, { setSubmitting }) => {
    dispatch(createUser({ phone: replace(phone, /\D/g, ''), email, password }));
    setSubmitting(false);
  };

          <Formik
            validationSchema={RegisterSchema}
            initialValues={{ [FIELDS.PHONE]: '', [FIELDS.EMAIL]: '', [FIELDS.PASSWORD]: '' }}
            onSubmit={onSubmit}
          >
          // ..................
          </Formik>

createUser.js
const callRegister = (data) => http.post(METHODS.REGISTER, data);

export const createUser = (data) => async (dispatch) => {
  const [execute] = apiShell(callRegister, dispatch);
  const response = await execute(data);

  const success = get(response, 'success') || false;

  if (success) {
    // здесь нужен редирект
  }
};


UPD: в общем, сделал так, пока работает.
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы