4️⃣POST mutation
⚡ 1) Реализуем добавление новой карточки в колоду
https://redux.js.org/tutorials/essentials/part-7-rtk-query-basics#creating-posts-with-mutations
⚡1.1) Подготовим апишку к запросу
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
import { baseURL } from "common/api";
import { ArgCreateCardType, FetchCardsResponseType } from "features/cards/services/cards.api.types";
export const cardsApi = createApi({
reducerPath: "cardsApi",
baseQuery: fetchBaseQuery({ baseUrl: baseURL, credentials: "include" }),
endpoints: (build) => {
return {
// ...
addCard: build.mutation<any, ArgCreateCardType>({
query: (card) => {
return {
method: "POST",
url: "cards/card",
body: {
card,
},
};
},
}),
};
},
});
export const { useGetCardsQuery, useAddCardMutation } = cardsApi;
⚡1.2) Сделаем запрос в компоненте
Теперь давайте сделаем запрос и убедимся что новая карточка добавилась в колоду 🚀
Обновив страницу вы можете убедиться, что карточка добавлена. Но нам бы хотелось видеть карточку не после обновления страница, а сразу же. Про автобновление после мутаций поговорим позже
⚡ 1.3) Типизация
⚡1.4) Unwrap / toast
Если мы просто добавили что то и не хотим дождаться ответа от сервера, то можно так и оставлять. Но если после того как мы сделали запрос, нам нужно показать нотификацию об успешном выполнении или зачитсить стейт с данными и прочее, тогда нужно сделать следующее
⚡ 1.5) Cards UI
теперь отрисуем нормально карточки (отмапим данные)
добавим стили чтобы хоть чуточку смотрелось красивее добавим стили. Но для для этого создадим в фиче cards папку components, а в ней папку Cards

прикрутим пагинацию. Она нам чуть позже понадобится
☝ Подведем промежуточные итоги. Мы научились:
делать query запросы
делать мутации
типизировать данные
реагировать на крутилки
При этом не используем axios, не работает с санками, не храним данные которые пришли с сервера в стейте
Last updated