диспетчерская функция / действие против диспетчеризации {тип: x} - PullRequest
0 голосов
/ 18 февраля 2020

При звонке

store.dispatch(...)

мы можем использовать его так (1):

store.dispatch(dispatch => {
   dispatch(someOtherAction())
});

или использовать его так (2):

store.dispatch({type: constants.X})

Первый вопрос: как называются два разных типа аргументов для отправки? Второй вопрос: в чем разница между вызовом (1) и вызовом (2)?

1 Ответ

1 голос
/ 18 февраля 2020

В (1) вы отправляете «гром». В (2) вы отправляете «действие». Кроме того, в (1) someOtherAction является «создателем действия». Вам нужно какое-то дополнительное промежуточное программное обеспечение (например, redux-thunk) для отправки thunk.

Как правило, ваша цель - отправлять действия, но если вам нужно асинхронно отправлять действие (например, после вызова API). ), вы можете использовать thunk, чтобы иметь возможность отправлять действие асинхронно. Например:

store.dispatch(dispatch => {
  fetch('api/user')
    .then(res => res.json())
    .then(user => {
      dispatch(loadUser(user))
    })
});

В этом примере мы используем преимущества концепции thunk, отправляя действие загрузки пользователя только после загрузки пользователя из некоторого API.

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