Вы код похож на то, что санк делает.
Согласно redux
документы, действия должны быть чистыми. И они всегда должны возвращать одинаковые значения для одних и тех же входных параметров. Используя fetch
, вы разрешаете действию возвращать не определенное значение, а скорее значение от сервера, и этот средний ответ действия может меняться со временем.
Это называется побочные эффекты. И это то, что не должно быть в действиях сокращения по умолчанию.
Но почему?
Да, вы можете набрать его внутри действия, как у вас, в небольших приложениях это не имеет значения.
В большом приложении есть преимущества использования redux-saga
:
действия предсказуемы, они просто возвращают полезную нагрузку как
{
type: 'FETCH_POSTS',
params: {
category: 'programming'
}
}
, а затем вы строите промежуточное программное обеспечение, которое будет принимать меры со всеми данными требуется для выполнения запроса к реальному API
Возможные преимущества:
- очиститель кодового (но может быть накладными расходы на небольших приложениях)
- разъединения «фиктивные» действий со всей необходимой информацией для выполнения запросов и фактического API промежуточного программного
- Параметры запроса видимы непосредственно в Redux инструменты Дев
- можно легко
debounce
, throttle
Fetches, который может быть очень сложно с Redux-санк
- возможно easil у комбинировать действия (ждать другого события/выборки, цепь событий)
- Можно остановить выполнение задач
Из личного опыта, на одном проекте (больше кодовой базы) мы начали с redux-thunk
, но потом нам нужно интегрировать более сложные функции, такие как дроссель и некоторые зависимости между действиями. Поэтому мы переписали все на redux-saga
, и это сработало для нас.
Вы можете сделать это точно. Когда вас кормят созданием оберток для каждого создателя действия вручную (например, вы делаете на строках 45-47) - вы сдаетесь и принимаете decux-thunk. – zerkms
, так что это единственное преимущество? избегая создания нескольких действий для такого рода задач? – sylvain
Если вы проверите код redux-thunk, вы увидите, что функция, которую он экспортирует, составляет всего 4 (четыре) строки кода https://github.com/gaearon/redux-thunk/blob/master/src/index.js – zerkms