@Pantene742

Что значит данная строка на ES6?

Открыл исходники React Проекта. это переменная Action(Redux)
В первой строке "е" это параметр стрелочной функции которую присваеваем константе handleChange. Дальше я не понимаю что происходит... вариантов несколько, как это работает не понимаю.
export const handleChange = e => dispatch => {    //   <- Эта строка
  dispatch({
    type: PROMO_CODE,
    payload: e.target.value
  });
};
  • Вопрос задан
  • 329 просмотров
Решения вопроса 3
Можно просто вставить сюда https://babeljs.io/repl и посмотреть результат

"use strict";

var handleChange = function handleChange(e) {
  return function (dispatch) {
    dispatch({
      type: PROMO_CODE,
      payload: e.target.value
    });
  };
};
Ответ написан
Комментировать
@AlexKindGeek
Аналог на ES5
function handleChange(e) {
  return function (dispatch) {
    dispatch({
      type: PROMO_CODE,
      payload: e.target.value
    });
  };
};


Почему возвращает функцию?
Это redux-thunk
Ответ написан
e => {...} - это функция, которая возвращает функцию. Такие функции называются функциями высшего порядка. Подробнее для JS https://habr.com/post/261723/
С тем же успехом можно записать так:
export const handleChange = e => {
  return dispatch => {    //   <- Эта строка
    dispatch({
      type: PROMO_CODE,
      payload: e.target.value
    });
  };
}

В результате вызова функции handleDispatch(e); будет вызвана вложенная функция dispatch в параметр payload, которой попадет e.target.value.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы