LINUX.ORG.RU

export ломает работу redux'a

 , , , ,


0

1

Есть редьюсер, в нем константа:

const CL_SELECT_POST = "ld-comments/commentsLoad/CL_SELECT_POST";
Далее, диспатчим:
export const commentsLoadSelectPost = (id) => {
  return (dispatch, getState) => {
    // code here
    dispatch({ type: CL_SELECT_POST, payload: data });
  }
}
Ловим экшен:
export default (state = initialState, action) => {
  switch (action.type) {
    ...
    case CL_SELECT_POST: {
      console.log(action);
      ...
    }
    ...
  }
};
В таком виде код работает прекрасно. Теперь, внимание, магия! Меняем одну строчку в коде:
export const CL_SELECT_POST = "ld-comments/commentsLoad/CL_SELECT_POST";
И все, ни чего не пашет. Редьюсер просто не ловит экшены CL_SELECT_POST.

Что это за дичь?

Deleted

Выхлоп webpack'a изучал? Я имею ввиду именно сгенерированный JS bundle? В своё время натыкался на проблему, когда он некорректно обрабатывал reexport'ы и на выходе выдавал нерабочий код.

Это правда было во времена webpack 2, но кто его знает, от веб-макак можно ждать чего угодно.

runtime ★★★ ()

В общем, я вчера разобрался с этой проблемой.

У меня был middleware, который перехватывал CL_SELECT_POST и при определенном условии этот middleware не вызывал next(), т.е. «распространение» экшена прекращалось и он не доходил до редьюсера.

Когда я убирал export, все работало по тому, что в middleware вместо CL_SELECT_POST было undefined.

Deleted ()