reatom-jsx について
Reatom JSX を使う開発者向けに、`@reatom/jsx` の実装と説明を案内するスキルです。React とは異なる描画モデルを重視し、Reatom コアやレビュー、詳細リファレンスの参照先も示します。
主な機能
- 01リファレンスのセクション案内
- 02マウント時に実行されるコンポーネント
- 03Atom とリアクティブな Props のパターン
- 04JSX エラー分離の指針
活用シーン
- 01`@reatom/jsx` コンポーネントの実装
- 02書き込み可能な Atom の UI へのバインド
- 03スタイルと動的リストの処理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ reatom/ reatom --skill reatom-jsxインストール後、Claude Code で/reatom-jsxを入力して読み込まれたか確認します。
同梱ファイルREFERENCE.md
詳細
Reatom JSX
@reatom/jsx を実装または説明するときは、このスキルを使用してください。このスキルに同梱されている正規のリファレンスとして、REFERENCE.md を参照してください。
使用方法
- REFERENCE.md の関連セクションを読んでください。React/Vue の JSX のセマンティクスを前提にしないでください(仮想 DOM、差分計算、コンポーネントの再レンダリングはありません)。
- Reatom のコア(atoms、wrap、async、routing)については、
reatomスキルを使用してください。 - プルリクエストと懐疑的な視点での検証には、JSX 固有のパターンにこのスキルを加えて
reatom-reviewを使用してください。
セクション一覧
REFERENCE.md の関連箇所だけを開くには、この一覧を使用してください。
| トピック | セクション |
|---|---|
| インストール、tsconfig、Vite | Installation, Framework compatibility |
| アプリの起動 | Example, Hot module replacement |
| Props、children、bindings | Reference → Props, Children, Models |
| インラインおよび css-prop のスタイル | Reference → style props, style:*, CSS-in-JS |
| クラス名 | Reference → class or className, reatomClassName |
| 条件付きスタイル/テーマスタイル | Reference → Conditional Styles with Attributes, cssVar |
| コンポーネントとリスト | Reference → Components |
| Props の一括バインディング | Reference → $spread |
| SVG と生のマークアップ | Reference → SVG |
| マウント時の副作用 | Reference → ref props |
| エラー、境界、jsxError | Error handling |
| ユーティリティ | Utilities → reatomClassName, css, cssVar, <Bind> |
| TypeScript | TypeScript |
| SSR とキー付きリスト | Limitations |
実装のデフォルト
- コンポーネントはマウント時に一度だけ評価される通常の関数です。更新にはアトムとリアクティブなプロパティを使用してください。
- 読み取り:引数なしでアトムを呼び出します。書き込み:
.set(...)を使用します。 - Reatom の状態を扱う
on:*ハンドラーは自動的にラップされるため、JSX 内で手動でラップしないでください。 - JSX 要素のインスタンスを複数の場所で再利用しないでください。使用するたびにコンポーネント関数またはファクトリーを呼び出してください。
- 通常の書き込み可能なアトム:検索、トグル、連結リストの行アトムには
model:value/model:checkedを使用します。 - 実際のフォーム:
@reatom/coreのreatomFormを使用し、<form model={form}>とmodel:field={form.fields.x}を指定します。フィールドアトムにmodel:valueを使用しないでください(field.changeを迂回します)。 - フォーム送信ローダー:フォームの
[data-submitting]にスタイルを適用します(model={form}により自動設定されます)。[type='submit']::afterには CSS のみでスピナーを設定します。 - SPA ナビゲーションには
reatomRouteを使用します。リンクにはhref={route.path(params})、プログラムからの遷移にはroute.go(params)を使用してください。reatomスキルの Routing セクションを参照してください。 - セマンティクスが重要な場合は、DOM プロパティに
prop:*、属性にattr:*を使用します。 mount(root, <App />)でマウントし、破棄時(Vite HMR を含む)にunmount()を呼び出します。マウントとルートの HMR 破棄が自動で行われるよう、@reatom/vite(reatom()プラグイン)を推奨します。- 動的リストでは、要素をアトムに格納するか、リアクティブな子の中でマップします。キーによる差分調整はありません。
<ErrorBoundary fallback={...}>と遅延評価される子{() => <Child />}で UI のエラーを分離します。jsxError/addCallHook(jsxError, ...)でグローバルに追跡します。cssプロパティ内に[data-x] &(または:where(...) &)を書かないでください。同じ要素の状態には、data-x={state}をバインドし、&[data-x='v']で選択します。祖先要素の状態には、cssVar(...).provide(state)で値を渡し、${token.container('v')} { … }でクエリします。値の違いにはカスタムプロパティを、コンテンツの違いにはリアクティブな子を優先し、セレクターとスタイルクエリは構造上の違いにのみ使用します。
REFERENCE.md とローカルの例が異なる場合は、リファレンスを優先し、例が誤っていれば修正してください。
コメント
Markdown 対応