AI翻訳通知
このドキュメ ントはAIによって翻訳されました。正確な情報については英語版をご参照ください。
JS Item
概要
JS Item は、フォーム内で「カスタム項目」(フィールドにバインドされていない項目)として利用できます。JavaScript/JSX を使って、ヒント、統計、プレビュー、ボタンなど、あらゆるコンテンツをレンダリングし、フォームやレコードのコンテキストと連携させることが可能です。リアルタイムプレビュー、説明表示、小さなインタラクティブコンポーネントといったシナリオに最適です。

ランタイムコンテキスト API(よく使うもの)
ctx.element: 現在の項目のDOMコンテナ(ElementProxy)です。innerHTML、querySelector、addEventListenerなどに対応しています。ctx.form: AntD Formのインスタンスです。getFieldValue / getFieldsValue / setFieldsValue / validateFieldsなどの操作が可能です。ctx.blockModel: 所属するフォームブロックのモデルです。formValuesChangeをリッスンして連携を実装できます。ctx.record/ctx.collection: 現在のレコードとコレクションのメタ情報です(一部のシナリオで利用可能)。ctx.requireAsync(url): URLを指定してAMD/UMDライブラリを非同期でロードします。ctx.importAsync(url): URLを指定してESMモジュールを動的にインポートします。ctx.openView(viewUid, options): 設定済みのビュー(ドロワー/ダイアログ/ページ)を開きます。ctx.message/ctx.notification: グローバルなメッセージと通知機能です。ctx.t()/ctx.i18n.t(): 国際化機能です。ctx.onRefReady(ctx.ref, cb): コンテナの準備ができてからレンダリングします。ctx.libs.React/ctx.libs.ReactDOM/ctx.libs.antd/ctx.libs.antdIcons/ctx.libs.dayjs: JSXレンダリングや時間処理に利用できる、React、ReactDOM、Ant Design、Ant Designアイコン、dayjsなどの汎用ライブラリが組み込まれています。(ctx.React/ctx.ReactDOM/ctx.antdは互換性のために引き続き利用可能です。)ctx.render(vnode): React要素/HTML/DOMをデフォルトのコンテナctx.elementにレンダリングします。複数回レンダリングする場合、Rootは再利用され、コンテナの既存コンテンツは上書きされます。
エディターとスニペット
Snippets: 組み込みのコードスニペットリストを開き、検索して現在のカーソル位置にワンクリックで挿入できます。Run: 現在のコードを直接実行し、実行ログを下部のLogsパネルに出力します。console.log/info/warn/errorに対応しており、エラーのハイライト表示と位置特定が可能です。

- AI従業員と連携してスクリプトを生成・修正することも可能です:AI従業員・Nathan:フロントエンドエンジニア
よくある使い方(簡易例)
1) リアルタイムプレビュー(フォーム値の読み取り)
2) ビュー(ドロワー)を開く
3) 外部ライブラリのロードとレンダリング
注意事項
- 外部ライブラリのロードには信頼できるCDNの利用をお勧めします。失敗するシナリオに備え、フォールバック処理(例:
if (!lib) return;)を実装 してください。 - セレクターは
classまたは[name=...]を優先し、固定idの使用は避けることをお勧めします。これにより、複数のブロックやポップアップでのidの重複を防ぐことができます。 - イベントのクリーンアップ: フォームの値が頻繁に変更されると、複数回のレンダリングがトリガーされます。イベントをバインドする前に、クリーンアップまたは重複排除を行う必要があります(例:
removeしてからaddする、{ once: true }を使用する、またはdataset属性で重複防止のマークを付けるなど)。

