Svelte と React:1つのコンポーネントを2通りで

Svelte と React の比較

Svelte と React:同じコンポーネントを両方で書く | We.Inc

同じカウンター、リスト、フォーム、エフェクトをそれぞれで書いて Svelte 5 と React を比較します。runes と hooks の違いと、次のプロジェクトにどちらが合うかがわかります。

Svelteはコンパイラーです。.svelte ファイルをプレーンなJavaScriptに変換し、$state ルーンで宣言した状態はページを直接更新します。Reactはライブラリで、状態が変わるたびにコンポーネント関数が再実行され、新しいJSXを返します。Svelteは通常コンポーネントあたりのコードが少なく、Reactにはより大きなエコシステムと採用市場があります。

Svelte 5 と React のひと目でわかる比較

下でコンポーネントを選ぶと、Svelte 5 版と React 版を並べて読めます。どちらもまったく同じ動作をするので、見える違いはフレームワークの違いだけです。どのスニペットも完結しており、新しいプロジェクトでそのまま動きます。

よくある質問

Svelte は React より速いですか?

結果はアプリやテストによって変わるため、ここでは速度の数値は挙げません。構造上の違いは確かにあります。Svelteはフレームワークの層をコンパイルで取り除き、変わった部分だけを更新しますが、Reactはコンポーネントを再実行して結果を比較します。

Svelte 5 でもリアクティブな状態に let を使いますか?

let だけでは使いません。Svelte 4 ではトップレベルの let がデフォルトでリアクティブでした。Svelte 5 ではこれが明示的になり、$state で作成したときに変数がリアクティブになります。

Next.js の Svelte 版は何ですか?

SvelteKit です。Svelteのドキュメントは、これを公式のアプリケーションフレームワークと呼んでおり、Svelteのコンポーネントの上にルーティング、サーバーレンダリング、データ読み込みを加えます。

Svelte で React のライブラリを使えますか?

直接は使えません。Reactのコンポーネントの描画にはReactが必要です。日付や検証のヘルパーなど、UI層を持たないプレーンなJavaScriptのライブラリなら両方で動きます。

初心者はどちらを先に学ぶべきですか?

Svelteのテンプレートはプレーンなhtmlに近いので、最初の一歩はより楽です。Reactにははるかに多くのチュートリアルと求人があります。就職が目的ならReactから始めましょう。

runes と hooks

エフェクトと依存関係

それぞれが合う場面

それぞれでプロジェクトを始める

雛形作成のコマンド

1つ目のコマンドは公式の sv ツールで SvelteKit のアプリを始め、2つ目は最もドキュメントが充実したReactフレームワークである Next.js のアプリを始めます。

カウンター

$state が変数をリアクティブにするので、Svelteでは count++ と書けます。Reactではセッターが必要で、新しい値は次のレンダーで反映されます。

リスト

$state の配列は深くリアクティブなプロキシなので、push でページが更新されます。Reactは状態を読み取り専用として扱うので、配列をコピーしてそのコピーをセッターに渡します。

フォーム

bind:value は入力欄と変数を双方向に同期させます。Reactは制御された入力を使い、value は状態から来て、onChange がそれを書き戻します。

エフェクト

Svelteはエフェクトが count を読んでいることを自分で判断します。Reactでは count を依存配列に入れる必要があり、入れないとタイトルが更新されなくなります。

Svelte と React で書いた同じコンポーネント

コンポーネントを選択

Svelte 5(.svelte)

React(.jsx)

Svelte版をコピー

React版をコピー

Svelte:{n} 行、React:{v} 行

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る