应用程序逻辑:高阶减少器与redux-thunk

时间:2017-07-20 12:09:09

标签: reactjs redux react-redux redux-thunk

我有一个缩减器可以跟踪selectedFiles状态,另一个缩放器保留addedFiles。我想创建一个添加当前所选文件的组件,但问题是addedFiles reducer无法访问selectedFiles状态。

解决此问题的一种方法是在组件中保留selectedFiles状态,并调用一个更新减速器中addFiles(selectedFiles)状态的操作addedFiles

但是我认为这会在我的组件中包含太多逻辑,而我宁愿采取addSelectedFiles()动作。我可以使用redux-thunk这样做

export function addSelectedFiles() {
    return (dispatch, getState) => {
       const { selectedFiles } = getState()
       // addFiles is a non exported action as so: return {type, files}
       dispatch(addFiles(selectedFiles))
    };
}

然而,我担心这是一种反模式,所以另一种方法是创建一个更高阶的减速器,因此

function reducer(state, action) {
  const selectedFiles = selectedFilesReducer(state, action);
  const addedFiles = addedFilesReducer(state, action, selectedFiles) // <-- selectedFiles state
  return { selectedFiles, addedFiles }
}

哪种替代方案最好?

0 个答案:

没有答案