Remix#
RemixはWebフレームワークで、PESPA(Progressively Enhanced SPA) と呼ばれるタイプの、バックエンドとフロントエンドの両方を扱うアーキテクチャになっている。
Tutorial / 解説#
公式の短いTutorial: Quick Start (5m) | Remix
公式のTutorial: Tutorial (30m) | Remix
概念#
loader#
レンダリング時にデータを取得する(GETする)ための関数。
サーバ側で実行される ので、SPAでありがちな「クライアント側からデータ取得のためAPIを叩くときにAPI-keyをどう秘匿するか」みたいな問題が解決される。
ページごとに定義して使う。例えば、一覧ページ(例えばposts.tsx
)では配列Post[]
を返すloader()
を定義し、詳細ページ(posts.$postId.tsx
)では1つの要素(Post
)を返すloader()
を定義し、自分のcomponentの中で使う
// loaderの例
import { json } from "@remix-run/node";
export const loader = async () => {
const response = await fetch("https://jsonplaceholder.typicode.com/posts?_limit=5");
const posts = await response.json();
return json({ posts });
};
export default function App() {
const { posts } = useLoaderData<typeof loader>()
action#
データを更新する(POST, DELETE, PUT, PATCH)ときに使う関数
Outlet#
親ルート内において、子ルートがレンダリングされる場所を示すために使われるコンポーネント
import { Outlet } from "@remix-run/react"
export default function App() {
return <Outlet />
}
評判#
https://x.com/kenn/status/1816500405150609717
Railsから移行しての感想