Почему аргументы thunk обернуты внутри объекта? - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь понять thunks в redux:

const thunk = ({ dispatch, getState }) => next => action => {
  if (typeof action === 'function') {
    return action(dispatch);
  }
  return next(action);
};

И мне трудно понять, почему аргументы передаются как объект (или это деконструкция объекта?). Почему они просто не передаются как dispatch, getState?

1 Ответ

1 голос
/ 22 января 2020

Промежуточному программному обеспечению Redux предоставляется миниатюрная версия API хранилища Redux в качестве аргумента самой внешней функции. Полный API магазина - {dispatch, subscribe, getState, replaceReducer}. Промежуточному программному обеспечению предоставляется только доступ к {dispatch, getState}.

Что касается того, почему это объект, а не отдельные аргументы, , это просто подробности реализации :

    const middlewareAPI = {
      getState: store.getState,
      dispatch: (...args) => dispatch(...args)
    }
    const chain = middlewares.map(middleware => middleware(middlewareAPI))
    dispatch = compose(...chain)(store.dispatch)
...