Component コンポーネント開発
NocoBase では、ルートにマウントするページコンポーネントは普通の React コンポーネントです。React + Antd をそのまま使って書くことができ、普通のフロントエンド開発と変わりません。
NocoBase は追加で以下を提供しています:
observable+observer— 推奨の状態管理方式。useStateよりも NocoBase エコシステムに適していますuseFlowContext()— NocoBase のコンテキスト機能(リクエスト送信、国際化、ルーティングナビゲー ションなど)を取得します
基本的な書き方
最もシンプルなページコンポーネント:
作成したら、プラグインの load() 内で this.router.add() を使って登録します。詳しくは Router ルーティングをご覧ください。
状態管理:observable
NocoBase では、React の useState の代わりに observable + observer を使ったコンポーネント状態管理を推奨しています。その利点は:
- オブジェクトのプロパティを直接変更するだけで更新がトリガーされ、
setStateが不要 - 自動的な依存関係収集により、使用しているプロパティが変化した時のみコンポーネントが再レンダリングされる
- NocoBase の内部(FlowModel、FlowContext など)のリアクティブ機構と一貫性がある
基本的な使い方:observable.deep() でリアクティブオブジェクトを作成し、observer() でコンポーネントをラップします。observable と observer はどちらも @nocobase/flow-engine からインポートします:
プレビュー:
より詳しい使い方は Observable リアクティブ機構をご覧ください。
useFlowContext の使い方
useFlowContext() は NocoBase の機能と接続するためのエントリポイントです。@nocobase/flow-engine からインポートし、ctx オブジェクトを返します:
以下は主な機能の使用例です。
リクエスト送信
ctx.api.request() でバックエンド API を呼び出します。使い方は Axios と同じです:
国際化
ctx.t() で翻訳テキストを取得します:
ルーティングナビゲーション
ctx.router.navigate() でページ遷移します:
現在のルートパラメータを取得:
現在のルート名を取得:
その他のログレベルと使い方は Context → 共通機能をご覧ください。
完全な例
observable、useFlowContext、Antd を組み合わせた、バックエンドからデータを取得して表示するページコンポーネント:
次のステップ
useFlowContextが提供する全機能 — Context コンテキストを参照- コンポーネントのスタイルとテーマカスタマイズ — Styles & Themes スタイルとテーマを参照
- コンポーネントを NocoBase の「ブロックの追加 / フィールド / 操作」メニューに表示し、ユーザーのビジュアル設定をサポートする場合は FlowModel でラップする必要があります — FlowEngineを参照
- Component と FlowModel のどちらを使うか迷ったら — Component vs FlowModelを参照
関連リンク
- Router ルーティング — ページルートの登録、コンポーネントの URL へのマウント
- Context コンテキスト — useFlowContext の全機能の紹介
- Styles & Themes スタイルとテーマ — createStyles、テーマ token など
- FlowEngine — ビジュアル設定が必要な場合は FlowModel を使用
- Observable リアクティブ機構 — FlowEngine のリアクティブ状態管理
- Context → 共通機能 — ctx.api、ctx.t などの組み込み機能
- Component vs FlowModel — コンポーネントか FlowModel かの選択

