如何在不满足某个条件时调用takeLatest api之前取消redux saga中的操作

时间:2016-08-22 22:28:57

标签: redux redux-saga

我创建了一个事件处理程序,当用户单击提交按钮时,表单就会被提交:

 export function* rootSaga(){
 yield [ 
  watchSubmittingForm()]}
 }

 export function watchSubmittingForm(){
 const state = yield select();
 let email = state.form.email;
 let password = state.form.password; 

  yield* takeLatest("SUBMIT_LOGIN", addLogin, email, password)
 }

如果电子邮件或密码以redux方式为空,如何使其不运行addLogin调用?

以jquery方式,我们有一个名为event.prevenDefault()的东西,这里有什么不运行takeLatest API调用的传奇方式?

1 个答案:

答案 0 :(得分:2)

takeLatest助手将在最新的" SUBMIT_LOGIN"行动。所以我会在有条件的情况下包装动作创建者或代码来触发动作。像

这样的东西
if (email && password) dispatch(submitLogin());

这样你就不会通过redux管道传递动作,中间件也不会看到它,如果你有密码和电子邮件,动作将被调度并且saga中间件将拦截它