реагировать на избыточный доступ к внешнему API через промежуточное ПО thunk - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь научиться реагировать на редуИ чтобы вызвать внешний API отдыха, я использую промежуточное программное обеспечение Thunk.

Однако синтаксис так меня сильно смущает, я был бы признателен, если бы кто-нибудь мне объяснил.

export function listTodos() {
  return (dispatch) => axios.get("http://localhost:5001/todos")
    .then(response => {
      console.log(response.data);
      dispatch(getTodos(response.data));
    })
}

export function _listTodos(todos) {
  return {
    type: 'LIST_TODOS',
    todos: todos
  }
}

поэтому, чтобы получить ответ от внешнего API, я вызываю функцию listTodos, которая отправляет действие, возвращаемое функцией listTodos.

Меня смущает синтаксис (возможно, потому что это ES6 и я не очень знаком с этим).

почему возвращение принимает параметр, диспетчеризация?

откуда идет эта отправка, я ничего не передаю, когда звоню listTodos

почему мне даже нужен возврат, не должно ли отправка действия достаточно изнутри then

1 Ответ

0 голосов
/ 07 февраля 2019

Redux принимает только простые JavaScript-объекты для отправки.Промежуточное программное обеспечение Thunk преодолевает это, позволяя вам предоставлять функции для отправки.В этом примере, по сути, вы возвращаете ссылку на функцию для отправки, которая будет выполнена thunk.

как происходит возврат, принимая параметр dispatch?

откуда идет эта отправка, я не передаю ничего, когда вызываю listTodos

Как только thunk встречает функцию, она выполняет эту функцию и передает диспетчеризацию как параметр, так что вы можетеиспользуйте его в функции для фактической отправки (_listTodos (todos)).Так что thunk будет делать что-то вроде этого

   if(typeof action === 'function') {
       //Reason why it takes a dispatch parameter
       //And thunk is the one who sends it to the function
       action(dispatch);
   }

, где action - это функция, которую вы вернули из вашего listTodos ()

почему мне даже нужен возврат,не следует отправлять действие изнутри, тогда требуется

return, чтобы дать thunk функцию, чтобы она могла выполнить вышеуказанное действие.

...