Redux - 异步 - 输入字段更改时的 POST 状态

Redux - Async - POST state on input field change

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

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

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

现在我想 POST 将整个新的更新状态发送到服务器。

  1. 如何使用 redux-saga/redux-thunk 来实现?上面的reducer刚更新完state就触发另一个action正确吗?我怎样才能触发这样的行动?

根据下面的回复,我会用新值更新状态,然后 POST 数据到 saga 处理程序生成器中的服务器,但我不确定这个实现是否正确。 How to fire AJAX calls in response to the state changes with Redux?

  1. POST整个状态并在每次更改时将其与服务器同步是否正确?是否应该仅发布新值并根据响应更新应用程序状态?

  2. 您能推荐一种完全不同的方法吗?

我想澄清一下,经过一段时间的搜索,我没有在我的问题中找到任何明确的答案。 redux 堆栈中的新功能,我不太确定我的问题有多相关。

实施比最初想象的要简单得多。我唯一需要做的就是 "hear" 在我的 sagas 中执行相同的调度操作。

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