Русский
Открыть в Telegram

Пост Получение данных с помощью Server Actions в Next.js

25 июля 2024
З
Заметки про React
Ссылка
нажмите — покажем
Получение данных с помощью Server Actions в Next.js В своем блоге Робин Вирух показал опыт использования Server Actions для получения данных в Next.js. В документации Next.js рекомендуют использовать Route Handlers для создания API, например: import { getPosts } from "@/data"; export async function GET() { const posts = await getPosts(); return Response.json(posts); } "use client"; import { Posts } from "@/posts"; import { useQuery } from "@tanstack/react-query"; const fetchPosts = async () => { const response = await fetch("/api/posts"); return await response.json(); }; const Page = () => { const { data, isLoading } = useQuery({ queryKey: ["posts-route-handler"], queryFn: fetchPosts, }); /* --snip-- */ } У этого подхода есть свои минусы: функцию fetchPosts необходимо отдельно типизировать. В документации Next.js написано, что Server Actions предназначены только для записи (мутация), а не для чтения (запроса) данных. Однако, возможность использовать Server Actions для чтения данных есть, пример: "use client"; import { getPosts } from "@/data"; import { Posts } from "@/posts"; import { useQuery } from "@tanstack/react-query"; const fetchPosts = async () => { return await getPosts(); }; const Page = () => { const { data, isLoading } = useQuery({ queryKey: ["posts-server-action"], queryFn: fetchPosts, }); /* --snip-- */ } Плюсы такого подхода: 🔴Есть возможность переиспользовать getPosts как в серверных компонентах, так и в клиентских компонентах. 🔴Типизация запроса. Это похоже на типизированный удаленный вызов процедуры tRPC, аргументы функции и возвращаемый результат будут иметь тип. https://www.robinwieruch.de/next-server-actions-fetch-data/
28 · 3.1K ·

Рядом в ленте

ЗЗаметки про ReactОтличия React и React Native Хоть React и React Native имеют много общего, внутри они довольно разные. В блоге Expo вышла статья о различиях между React и ReactЗЗаметки про Reactreact-html В React появился отдельный модуль react-html, из которого можно импортировать функцию рендера HTML renderToMarkup. Это преемник функции renderToStati
это сообщение
ЗЗаметки про ReactDRY – источник плохих абстракций В блоге Свижец Теллер вышла статья про принцип DRY. Самый худший и сложный для сопровождения код, который я видел или писал, быЗЗаметки про ReactФича флаги в Next.js Для Next.js появилась библиотека @vercel/flags/next для работы с фича-флагами в коде. Пример объявления: import { unstable_flag as flag } f
ЗЗаметки про ReactЗаметки про React@ru_react_notes · канал · Технологии
3 412подписчиков491постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем