改变redux状态后如何触发功能?

时间:2020-09-01 14:35:33

标签: javascript reactjs redux react-redux

我正在创建一个登录页面,要求用户输入验证码字符串。

以下是我的代码。

我的还原状态为isFail,默认值为false。用户登录失败后,状态将变为true

isFail为真时,我希望它触发fetchCaptcha()函数来刷新验证码图像。

是否有更好的方法来触发redux状态更改功能?

const LoginForm = props => {
    const captchaImage = useSelector(state => state.auth.captchaImage);
    const isFail = useSelector(state => state.auth.isFail);
    const dispatch = useDispatch();

    const fetchCaptcha = useCallback(() => dispatch(actions.fetchCaptcha()), [dispatch]);
    const login = useCallback(data => dispatch(actions.login(data)), [dispatch]);

    const loginHandler = (formData) => {
        login(formData);
        
        if(isFail){
          fetchCaptcha();
        }
    }

    useEffect(() => {
        fetchCaptcha();
    }, [fetchCaptcha]);

    return (
      ...SKIP
    );
  }
  
  export default LoginForm;

1 个答案:

答案 0 :(得分:0)

您可以使用store.subscribe(callbackFunction)。调度动作时都会调用它。

https://redux.js.org/api/store#subscribelistener