2017-04-19 78 views
0

我有一個非常簡單的表單字段的應用程序,並希望在每個字段的更新觸發POST請求到服務器,以獲得數據庫中的數據同步。Redux - 異步 - 在輸入字段更改的POST狀態

在輸入字段更改時,將使用要更新的字段的值&的值調度同步操作。此操作由以下減速器處理。

export const reducer = (state, action) => { 
    switch(action.type) { 
    case INPUT_FIELD_UPDATE: 
     return Object.assign({}, state, { 
     [action.key]: action.value 
     }); 
    default: 
     return state; 
    } 
}; 

現在我想發佈整個新的更新狀態到服務器。

  1. 這怎麼可以用redux-saga/redux-thunk來實現?在上述Reducer完成更新狀態後觸發另一個操作是否正確?我怎樣才能觸發這樣的行爲?

下面根據迴應,我會更新新的值,然後POST數據到佐賀處理髮電機內服務器的狀態,但我不知道這是否實施是正確的。 How to fire AJAX calls in response to the state changes with Redux?

  • 它是正確的後整個狀態和在每個變化服務器同步呢?應該只發布新值,並更新響應的應用程序狀態?

  • 你會提出一個完全不同的方法嗎?

  • 我想澄清的是目前正在尋找相當長的一段時間後,我沒有找到我的問題的任何明確的答案。還原堆棧中的新增功能,我不太確定我的問題可能有多相關。

    回答

    0

    實現比首先想到的要簡單得多。我唯一需要做的就是在我的傳奇故事中「聽到」同樣的派遣行動。

    function* handleChange(action) { 
    try { 
        let state = yield select(state => state); 
        yield put(syncing()); 
        const response = yield call(api,{state}); 
        if(response.updated) { 
         yield put(syncSucceeded()); 
        } else { 
         yield put(syncFailed()); 
        } 
        } catch (e) { 
        yield put(syncFailed(e)); 
        } 
    } 
    
    function* mySaga() { 
        yield takeLatest(INPUT_FIELD_UPDATE, handleChange); 
    }