我应该通过组件或redux-thunk中间件获取状态数据吗? React Redux

时间:2016-11-21 09:39:29

标签: reactjs redux redux-thunk

它说

  

在动作创作者中做更多,在减少者中做更多

所以,我应该:

  1. 通过组件传递当前状态数据?

    this.props.fileActions.addFile( Object.keys(this.props.fileById).length )

  2. 或者通过redux-thunk获取动作创建者的状态数据?

    export const addFile(){ return (dispatch, getState) =>{ const filelength = Object.keys(getState().fileById).length; dispatch(addFileAction(filelength)) } }

  3. P.S。我来自Angular世界,在大多数情况下我在服务中存储数据,调用Service.addFile()并且files.length已经存储在服务中,因此无需传递Service.addFile(files.length)

2 个答案:

答案 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;
}

您将在某些操作后修改状态。这正是减速器应该做的事情。