Загрузка в useEffect или React Query / SWR. Состояния: loading, error, data. async в useEffect: отдельная async function внутри.
Отмена запроса: AbortController. POST: fetch(url, { method: 'POST', headers, body: JSON.stringify(data) }).
React Query кеширует, рефетчит и упрощает серверный state.
useEffect(() => {
let cancelled = false
async function load() {
const res = await fetch('/api/items')
const json = await res.json()
if (!cancelled) setData(json)
}
load()
return () => { cancelled = true }
}, [])await fetch('/api/items', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name }),
})Книга, игра и упражнения доступны без регистрации. Видеоуроки — после оплаты курса.