Польза применения createAsyncThunk в Redux
На прошлом занятии мы применили функцию
createAsyncThunk
из RTK для того,
чтобы написать наш первый thunk. В этом
уроке я бы хотел немного остановиться
на пользе этой функции при отправке
запросов.
Вообще, логика для получения данных методом
fetch
в Redux выглядит довольно шаблонно.
И, соответственно, для отправки статуса запроса
в thunk нам понадобиться создать как минимум три
action (с type
и payload
). Первый
должен отправляться при отправке запроса,
второй - при успешном выполнении запроса и
третий - при неудачном. Затем их можно отправлять
с помощью dispatch
в коде thunk, к примеру в
блоках try-catch
. В результате такой код
может выглядеть довольно громоздко и неудобно
(достаточно глянуть документацию). Каждый из action
при этом может иметь свой action creator. К
тому же нельзя перепутать последовательность
их отправки и сами экшены в частности. Конечно,
это не то чтобы все обязательно, но является широко
распространенной практикой при отправке запросов.
К счастью нам больше не надо делать все это
вручную - теперь это сделает функция
createAsyncThunk
и сгенерирует thunk,
который отправит все эти actions
автоматически. Нам лишь нужно передать
в createAsyncThunk
колбэк, который сделает
асинхронный вызов и вернет промис с
результатом. Что мы и сделали на
прошлом уроке.