AI翻訳通知
このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。
ctx.on()
RunJS において、コンテキストイベント(フィールド値の変更、プロパティの変更、リソースの更新など)を購読します。イベントはそのタイプに応じて、ctx.element 上のカスタム DOM イベント、または ctx.resource の内部イベントバスにマッピングされます。
適用シーン
型定義
よく使われるイベント
イベントのマッピングルール:
resource:プレフィックスが付いているものはctx.resource.onを経由し、それ以外は通常ctx.element上の DOM イベント(存在する場合)を経由します。
例
フィールドの双方向バインディング(React useEffect + クリーンアップ)
ネイティブ DOM の監視(ctx.on が利用できない場合の代替案)
リソース更新後の UI 更新
ctx.off との組み合わせ
ctx.onで登録したリスナーは、メモリリークや重複実行を避けるため、適切なタイミングで ctx.off を使用して削除する必要があります。- React では、通常
useEffectのクリーンアップ関数内でctx.offを呼び出します。 ctx.offが存在しない場合があるため、使用時はオプショナルチェイニング(ctx.off?.('eventName', handler))の使用を推奨します。
注意事項
- ペアでの解除:
ctx.on(eventName, handler)を呼び出すたびに、対応するctx.off(eventName, handler)が必要です。また、渡されるhandlerの参照は同一である必要があります。 - ライフサイクル: コンポーネントのアンマウントやコンテキストの破棄の前にリスナーを削除してください。そうしないとメモリリークの原因になります。
- イベントの可用性: コンテキストのタイプによってサポートされるイベントが異なります。詳細は各コンポーネントのドキュメントを参照してください。
関連ドキュメント
- ctx.off - イベントリスナーの削除
- ctx.element - レンダリングコンテナと DOM イベ ント
- ctx.resource - リソースインスタンスとその
on/off - ctx.setValue - フィールド値の設定(
js-field:value-changeをトリガーします)

