Asynchronous Redux-异步-输入字段更改后的状态

Asynchronous Redux-异步-输入字段更改后的状态,asynchronous,redux,redux-thunk,redux-saga,Asynchronous,Redux,Redux Thunk,Redux Saga,我有一个应用程序,其中包含一些非常简单的表单字段,希望在每次更新字段时触发对服务器的POST请求,以便在数据库中同步数据 在输入字段更改时,将调度一个同步操作,其中包含要更新的字段的键和值。此操作由以下减速器处理 export const reducer = (state, action) => { switch(action.type) { case INPUT_FIELD_UPDATE: return Object.assign({}, state, {

我有一个应用程序,其中包含一些非常简单的表单字段,希望在每次更新字段时触发对服务器的POST请求,以便在数据库中同步数据

在输入字段更改时,将调度一个同步操作,其中包含要更新的字段的键和值。此操作由以下减速器处理

export const reducer = (state, action) => {
  switch(action.type) {
    case INPUT_FIELD_UPDATE:
      return Object.assign({}, state, {
        [action.key]: action.value
      });
    default:
      return state;
  }
};
现在我想将整个新的更新状态发布到服务器上

  • 如何使用redux saga/redux thunk实现这一点?在上述reducer完成更新状态之后触发另一个操作是否正确?我怎样才能触发这样的行动
  • 根据下面的响应,我将使用新值更新状态,然后将数据发布到saga处理程序生成器中的服务器,但我不确定此实现是否正确。

  • 发布整个状态并在每次更改时与服务器同步是否正确?是否应该只发布新值,并在响应时更新应用程序状态

  • 你会建议一个完全不同的方法吗


  • 我想澄清一下,经过一段时间的搜索,我还没有找到任何明确的答案在我的问题。作为redux堆栈中的新成员,我不太确定我的问题有多重要。

    实现比最初想象的要简单得多。我所要做的唯一一件事就是“倾听”我的传奇故事中同样的行动

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