2016-08-22 25 views
-1

我已經創建,其中當用戶點擊提交按鈕的形式被提交的事件處理程序:如何取消Redux的傳奇動作的takeLatest API調用之前,當某個條件不滿足

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) 
} 

我如何使它不運行addLogin調用,當電子郵件或密碼爲空時,以redux的方式?

在jquery的方式,我們有一個名爲event.prevenDefault(),這裏是什麼傳奇方式不運行takeLatest API調用?

回答

2

takeLatest幫手將觸發最新的「SUBMIT_LOGIN」操作。所以我會包裝動作創建者或代碼,在條件中觸發動作。喜歡的東西

if (email && password) dispatch(submitLogin()); 

這樣,你是不是傳遞行動,通過了Redux管道和中間件不會看到它,如果你有一個密碼和電子郵件,該操作將被分派和傳奇中間件會攔截它。

+0

閱讀文檔後,我發現如果我使用yield yield而不是yield takeLatest,它會更好。 – slopeofhope