このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。
現在のブロック内にある Ant Design Form インスタンスです。フォームフィールドの読み書き、バリデーションの実行、および送信に使用されます。ctx.blockModel?.form と等価であり、フォームブロック(フォーム、編集フォーム、子フォームなど)の下で直接使用できます。
| シーン | 説明 |
|---|---|
| JSField | 他のフォームフィールドとの連動、他のフィールド値に基づく計算やバリデーションの実装 |
| JSItem | 子テーブルの項目内で、同じ行または他のフィールドの読み書きを行い、テーブル内連動を実現 |
| JSColumn | テーブル列で、その行または関連フィールドの値を読み取ってレンダリングに使用 |
| フォーム操作 / イベントフロー | 送信前のバリデーション、フィールドの一括更新、フォームのリセットなど |
注意:
ctx.formはフォームブロック(フォーム、編集フォーム、子フォームなど)に関連する RunJS コンテキストでのみ利用可能です。非フォームシナリオ(JSBlock 独立ブロック、テーブルブロックなど)では存在しない可能性があるため、使用前にctx.form?.getFieldsValue()のように空値チェックを行うことを推奨します。
FormInstance は Ant Design Form のインスタンス型です。主なメソッドは以下の通りです。
| シーン | 推奨される使い方 |
|---|---|
| 現在のフィールドの読み書き | ctx.getValue() / ctx.setValue(v) |
| 他のフィールドの読み書き | ctx.form.getFieldValue(name) / ctx.form.setFieldValue(name, v) |
現在の JS フィールド内では、自身のフィールドの読み書きには getValue/setValue を優先的に使用します。他のフィールドにアクセスする必要がある場合に ctx.form を使用します。
| ニーズ | 推奨される使い方 |
|---|---|
| フォームフィールドの読み書き | ctx.form(ctx.blockModel?.form と等価ですが、より簡潔です) |
| 親ブロックへのアクセス | ctx.blockModel(collection、resource などを含む) |
フォーム値は await ctx.getVar('ctx.formValues') を通じて取得する必要があり、直接 ctx.formValues としては公開されていません。フォームコンテキスト内では、ctx.form.getFieldsValue() を使用して最新値をリアルタイムで読み取ることが推奨されます。
getFieldsValue() はデフォルトでレンダリング済みのフィールドのみを返します。未レンダリングのフィールド(折りたたみエリア内や条件付き表示で隠れているものなど)を含めるには、true を渡す必要があります:getFieldsValue(true)。['orders', 0, 'amount'])。ctx.namePath を使用して現在のフィールドのパスを取得し、同じ行の他の列のパスを構築するために利用できます。validateFields() は、errorFields などの情報を含むエラーオブジェクトをスローします。送信前のバリデーションに失敗した際、ctx.exit() を使用して後続のステップを終了させることができます。ctx.form がまだ準備できていない場合があります。オプショナルチェイニングや空値チェックの使用を推奨します。ctx.form は ctx.blockModel?.form と等価ctx.form.validateFields() や ctx.form.submit() と組み合わせて使用ctx.namePath:現在のフィールドのフォーム内パス(配列)。ネストされたフィールドで getFieldValue / setFieldValue の名前を構築する際に使用