Распространение действий Redux не работает в mapDispatchToProps - PullRequest
2 голосов
/ 11 марта 2019

Мой mapDispatchToProps работает следующим образом:

const mapDispatchToProps = dispatch => ({
  getCourts: () => dispatch(courtActions.getCourts()),
  selectStyle: style => dispatch(courtActions.selectStyle(style)),
  selectPoint: index => dispatch(courtActions.selectPoint(index)),
  sortPoints: sort => dispatch(courtActions.sortPoints(sort))
});

Я хочу написать это так:

const mapDispatchToProps = dispatch => ({
      ...courtActions,
});

, но когда я это делаю, ни одно из моих действий не работает (они не отправляются),Я уверен, что это что-то очевидное.Но что здесь происходит?

Вот файл действий:

export const getCourts = () => dispatch =>
  axios
    .get("/courts")
    .then(response => dispatch({ type: GET_COURTS, payload: response.data }));

export const selectStyle = style => ({ type: SELECT_STYLE, payload: style });

export const sortPoints = type => ({ type: SORT_POINTS, payload: type });

export const selectPoint = index => ({ type: SELECT_POINT, payload: index });

export default {
  getCourts,
  selectStyle,
  sortPoints,
  selectPoint
};

Ответы [ 2 ]

4 голосов
/ 11 марта 2019

mapDispatchToProps также принимает объект, который можно использовать вместо определения функции как mapDispatchToProps, которая должна возвращать функции, использующие диспетчеризацию.

Согласно документам:

Если объект передается, предполагается, что каждая функция внутри него является создателем действий Redux.Объект с теми же именами функций, но с каждым создателем действия, включенным в диспетчерский вызов, чтобы их можно было вызывать напрямую, будет объединен в подпорки компонента.

Пример

const mapDispatchToProps = courtActions;

Или вы можете просто передать courtActions в качестве второго параметра для подключения, например

connect(mapStateToProps, courtActions)(MyComponent);
0 голосов
/ 11 марта 2019

согласно моему пониманию mapDispatchToProps - это функция, которая принимает диспетчеризацию в качестве параметра и является диспетчером, который отправляет массаж редукторам. вы не можете использовать, как вы хотите использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...