Обновление React Router v6.4.0-pre
В новую минорную версию React Router v6.4 было добавлено много новых абстракций из Remix: action, loader.
Если для страницы будут нужны данные, то их можно вернуть в функции loader, а получить в самом компоненте через хук useLoaderData. Функция action используется для мутаций. Мутации выполняются через отправку формы, используя компонент Form, или через хук useSubmit.
export async function loader({ params }) {
const note = await getNote(params.noteId);
if (!note) throw new Response("", { status: 404 });
return note;
}
export async function action({ params }) {
await deleteNote(params.noteId);
return redirect("/new");
}
export default function Note() {
const note = useLoaderData();
return (
<div>
<h2>{note.title}</h2>
<div>{note.content}</div>
<Form method="post">
<button type="submit">Delete</button>
</Form>
</div>
);
}
createRoot(document.getElementById("root")).render(
<DataBrowserRouter>
<Route path="/" element={<Root />} loader={rootLoader}>
<Route
path="note/:noteId"
element={<Note />}
loader={noteLoader}
action={noteAction}
errorElement={<div>Note not found</div>}
/>
</Route>
</DataBrowserRouter>
);
beta.reactrouter.com/en/remi…ted/data