如何将动作创建者分成单独的文件?

时间:2018-03-03 15:08:39

标签: javascript reactjs redux

我正在尝试将我的动作创建者放入单独的文件中。我收到了错误

  

未定义错误分派。

// AddNewNote.js

// AddNewNote class is here

const mapDispatchToProps = dispatch => ({
  actionNoteCreate: actionNoteCreate,
});

export default connect(null, mapDispatchToProps)(AddNewNote);

// noteActions.js

import actionTypes from '../constants/actionTypes';

export const actionNoteCreate = (text) => {
  dispatch({
    type: actionTypes.NOTE_CREATE,
    payload: text,
  });
};

1 个答案:

答案 0 :(得分:2)

发送应该在mapDispatchToProps内,并从您的actionCreator中删除:

const mapDispatchToProps = dispatch => ({
  actionNoteCreate: text => dispatch(actionNoteCreate(text)),
});

export default connect(null, mapDispatchToProps)(AddNewNote);

然而,最好的方法是在mapDispatchToProps中简单地使用一个对象:

const mapDispatchToProps = {
    actionNoteCreate
};

react-redux将自动用dispatch包装它。

" [mapDispatchToProps(dispatch,[ownProps]):dispatchProps](对象或函数):如果传递了一个对象,则假定其中的每个函数都是一个Redux动作创建者。具有相同功能名称的对象,但每个动作创建者都包含在一个调度调用中,因此可以直接调用它们,它们将合并到组件的道具中。" https://github.com/reactjs/react-redux/blob/master/docs/api.md