如何处理 HandleSubmit 上的两个分派动作

时间:2021-04-05 03:48:45

标签: javascript reactjs forms redux react-redux

我需要在 SubmitForm 上分派两个不同的动作,逻辑是如果第一个动作成功我分派第二个动作

我喜欢这个

const handleClick = () =>{
setLoading(true)
const authorizationCode = refInput.current.state.tan
const email = emailValues?.email;
const UserId = phoneValues?.data?.d;
const phone_number = phoneValues?.value?.phone_number
const language = phoneValues?.value?.language

dispatch(verifyUserNumber({
  email,
  authorizationCode ,
  language,
  UserId,
  phone_number,
}))

setTimeout(() => {
  if(isDoneVerifyingUser){
      dispatch(getKycToken(UserId, phone_number, authorizationCode)) 
      setTimeout(() => {
        setOpenModel(false)
        setOpenKYC(true)
        setLoading(false)
        
      }, 2000); 
    }else{
      setError(true)
      setLoading(false)
    }
}, 2000);

}

但是我有一个问题是我必须点击按钮两次才能调度第二个动作

1 个答案:

答案 0 :(得分:1)

在状态中取一个变量 isDoneVerifying

在分派第一个 action 后,根据结果将 state 更新为 true 或 false。

在您的组件中使用依赖于 useEffect 的钩子 isDoneVerifying 并调用第二个分派。确保在执行减速器部分后将标志更改为 false。

相关问题