我有一个缩减器可以跟踪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 }
}
哪种替代方案最好?