このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。
RunJS において、コンテキストイベント(フィールド値の変更、プロパティの変更、リソースの更新など)を購読します。イベントはそのタイプに応じて、ctx.element 上のカスタム DOM イベント、または ctx.resource の内部イベントバスにマッピングされます。
| シーン | 説明 |
|---|---|
| JSField / JSEditableField | 外部(フォーム、連動など)からのフィールド値の変更を監視して UI を同期的に更新し、双方向バインディングを実現します。 |
| JSBlock / JSItem / JSColumn | コンテナ上のカスタムイベントを監視し、データや状態の変化に応答します。 |
| resource 関連 | リソースの更新や保存などのライフサイクルイベントを監視し、データ更新後にロジックを実行します。 |
| イベント名 | 説明 | イベントソース |
|---|---|---|
js-field:value-change | フィールド値が外部から変更された(フォーム連動、デフォルト値の更新など) | ctx.element 上の CustomEvent。ev.detail が新しい値となります。 |
resource:refresh | リソースデータが更新された | ctx.resource イベントバス |
resource:saved | リソースの保存が完了した | ctx.resource イベントバス |
イベントのマッピングルール:
resource:プレフィックスが付いているものはctx.resource.onを経由し、それ以外は通常ctx.element上の DOM イベント(存在する場合)を経由します。
ctx.on で登録したリスナーは、メモリリークや重複実行を避けるため、適切なタイミングで ctx.off を使用して削除する必要があります。useEffect のクリーンアップ関数内で ctx.off を呼び出します。ctx.off が存在しない場合があるため、使用時はオプショナルチェイニング(ctx.off?.('eventName', handler))の使用を推奨します。ctx.on(eventName, handler) を呼び出すたびに、対応する ctx.off(eventName, handler) が必要です。また、渡される handler の参照は同一である必要があります。on/offjs-field:value-change をトリガーします)