Есть ли способ справиться с забавными c опорами в реакции? - PullRequest
0 голосов
/ 07 марта 2020

Когда я заканчиваю sh отправку формы регистрации и получаю данные об успехе, я хочу go вернуться к форме входа.

Есть ли способ вызвать fun c реквизит в onSubmitForm?

main. js

const [goToRegister, setGoToRegister] = useState(false);

const onClickGoToRegister = useCallback(() => {
  setGoToRegister(prev => !prev);
}, []);
...

<Modal
  title={goToRegister ? "register" : "login"}
  visible={showModal}
  onCancel={onCancel}
  footer={null}
>
  {goToRegister ? (
    <SignUpForm onClickGoToRegister={onClickGoToRegister} />
  ) : (
    <LogInForm onClickGoToRegister={onClickGoToRegister} />
  )}
</Modal>;

Как видите, я передаю 'onClickGoToRegister 'fun c as props to SignUpForm.

SignUpForm. js

const onSubmitForm = useCallback(
  e => {
    e.preventDefault();
    dispatch({
      type: SIGN_UP_REQUEST,
      data: {
        name: name,
        email: `${email}@${tail}`,
        password: password,
        phone: `${phoneHead}${phoneBody}${phoneTail}`
      }
    });
    if (signUpErrorReason) {
      return message.error(signUpErrorReason);
    }
  },
  [
    name,
    email,
    tail,
    password,
    passwordCheck,
    phoneHead,
    phoneBody,
    phoneTail,
    signUpErrorReason
  ]
);

1 Ответ

0 голосов
/ 07 марта 2020

Превратите этого диспетчера в функцию обещания или асин c. если вы используете redux-thunk, я рекомендую использовать redux-обещание , которое преобразует диспетчеризацию в обещания

, если это действие диспетчеризации асин c, вы можете просто выполнить

dispatch()
 .then(() => {
    props.onClickGoToRegister()
  })  

или с помощью await

useCallback(async e => {
  // do stuff
 await dispach({})
 props.onClickGoToRegister()
})
...