Как работает избыточный танк с дополнительным аргументом? - PullRequest
0 голосов
/ 10 февраля 2020

это исходный код библиотеки redux-thunk:

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

    return next(action);
  };
}

const thunk = createThunkMiddleware();
thunk.withExtraArgument = createThunkMiddleware;

export default thunk;

Не могу понять, как "thunk" и "thunk.withExtraArguent" отличаются друг от друга.

const thunk=createThunkMiddleware() // это промежуточное ПО, которое мы используем для наших асинхронных c запросов

Однако thunk.withExtraArgument - это ЖЕ функция createThunkMiddleware, но на этот раз она просто передается как ссылка. Мы можем передать аргумент здесь, но не можем передать аргумент thunk .

Может кто-нибудь объяснить разницу, пожалуйста? Для меня thunk и thunk.withExtraArgument одинаковы

Ответы [ 2 ]

0 голосов
/ 21 марта 2020

вы можете добавить параметр Extra redux-thunk в качестве ссылки на функцию и вызывать его в своих асин c действиях. Вы можете прочитать больше о как использовать Ax ios в качестве ExtraParameter в этой истории на Medium

0 голосов
/ 14 марта 2020

В моем универсальном javascript приложении я создал экземпляр axe ios и избыточное хранилище на клиенте и сервере. Я передаю экземпляр ax ios на стороне клиента в хранилище на стороне клиента, а экземпляр ax ios на стороне сервера - в хранилище на стороне сервера.

Поскольку редукторы должны быть «чистыми» (они не изменяйте ничего вне их области действия) мы не можем выполнять какие-либо вызовы API или выполнять действия внутри редуктора. Если вы хотите, чтобы действие что-то сделало, этот код должен находиться внутри функции. Обычно наши действия - это просто простые объекты, мы просто отправляем их непосредственно в редуктор. Redux-thunk - это промежуточное ПО, которое просматривает каждое действие, проходящее через систему, и, если это функция, вызывает эту функцию. Redux передает два аргумента в функции thunk: dispatch , чтобы они могли отправлять новые действия, если это необходимо; и getState , чтобы они могли получить доступ к текущему состоянию. Промежуточное ПО REdux-thunk дает нам возможность создателю действия возвращать функцию вместо объекта действия. Однако extraArgument не определяется с помощью функции thunk.

  const thunk = createThunkMiddleware()

Когда я создавал каждую из копий избыточного хранилища, я также создал пользовательский экземпляр ax ios и передал этот пользовательский экземпляр в избыточный thunk в качестве дополнительной трети. аргумент. Затем в наших создателях действий, когда я делаю какой-то сетевой запрос, я получаю настроенную копию ax ios, а не сам модуль. Тогда я могу сделать запрос, не беспокоясь о том, находимся ли мы на клиенте или на сервере. thunk.withExtraArgument - это промежуточное ПО, в котором определен дополнительный аргумент. Поэтому я использую thunk.withExtraArgument и передаю экземпляры ax ios.

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