它说
在动作创作者中做更多,在减少者中做更多
所以,我应该:
通过组件传递当前状态数据?
this.props.fileActions.addFile( Object.keys(this.props.fileById).length )
或者通过redux-thunk获取动作创建者的状态数据?
export const addFile(){
return (dispatch, getState) =>{
const filelength = Object.keys(getState().fileById).length;
dispatch(addFileAction(filelength))
}
}
P.S。我来自Angular世界,在大多数情况下我在服务中存储数据,调用Service.addFile()并且files.length已经存储在服务中,因此无需传递Service.addFile(files.length)
答案 0 :(得分:0)
首选后一种用法。
将params传递给组件中的动作创建者会使您的组件与数据相结合,这意味着您可能无法重用此组件。
答案 1 :(得分:0)
对于您的用例,您似乎应该在reducer
中执行此操作function addNewFile() {
return {
type: 'ADD_NEW_FILE'
}
}
function filesReducer(state, action) {
if(action.type === 'ADD_NEW_FILE') {
const newId = state.filesById + 1;
return {
filesById: state.filesById.concat(newId),
entities: Object.assign({}, state.entities, {
[newId]: {name: `File ${newId}`}
})
};
}
// some other action handlers
return state;
}
您将在某些操作后修改状态。这正是减速器应该做的事情。