このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。
サンドボックス内の DOM コンテナを指す ElementProxy インスタンスであり、ctx.render() のデフォルトのレンダリング先として機能します。JSBlock、JSField、JSItem、JSColumn など、レンダリングコンテナが存在するシーンで使用可能です。
| シーン | 説明 |
|---|---|
| JSBlock | ブロックの DOM コンテナ。ブロックのカスタムコンテンツをレンダリングします。 |
| JSField / JSItem / FormJSFieldItem | フィールド/フォーム項目のレンダリングコンテナ(通常は <span>)。 |
| JSColumn | テーブルセルの DOM コンテナ。カスタム列のコンテンツをレンダリングします。 |
注意:
ctx.elementは、レンダリングコンテナが存在する RunJS コンテキストでのみ利用可能です。UI コンテキストがないシーン(純粋なバックエンドロジックなど)ではundefinedになる可能性があるため、使用前に null チェックを行うことを推奨します。
推奨:すべてのレンダリングは ctx.render() を通じて行ってください。 ctx.element の DOM API(innerHTML、appendChild、querySelector など)を直接使用しないでください。
| 利点 | 説明 |
|---|---|
| 安全 | セキュリティ制御を集中させ、XSS や不適切な DOM 操作を防止します。 |
| React サポート | JSX、React コンポーネント、およびライフサイクルを完全にサポートします。 |
| コンテキストの継承 | アプリケーションの ConfigProvider やテーマなどを自動的に継承します。 |
| 競合処理 | React ルートの作成/アンマウントを自動的に管理し、複数インスタンスによる競合を回避します。 |
ctx.element.innerHTMLは非推奨です。代わりにctx.render()を使用してください。
現在の要素をアンカーとして Popover を開く必要がある場合、ctx.element?.__el にアクセスして生の DOM を target として取得できます。
「現在のコンテナをアンカーとして使用する」といった特定のシーンでのみ
__elを使用してください。それ以外のケースでは DOM を直接操作しないでください。
ctx.render(vnode) に container が渡されない場合、デフォルトで ctx.element コンテナ内にレンダリングされます。ctx.element が存在せず、かつ container も渡されない場合は、エラーがスローされます。ctx.render(vnode, customContainer)ctx.element は ctx.render() の内部コンテナとしてのみ使用することを想定しており、そのプロパティやメソッドに直接アクセスしたり変更したりすることは推奨されません。ctx.element は undefined になります。ctx.render() を呼び出す前に、コンテナが利用可能であることを確認するか、手動で container を渡す必要があります。innerHTML/outerHTML は DOMPurify で洗浄されますが、レンダリング管理を統一するため、引き続き ctx.render() の使用を推奨します。