Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.

フォームライフサイクルの管理

フォームのライフサイクルイベントにフックして、送信前のユーザー入力をカスタマイズしたり、検証を実行したり、エラーを処理したりします。

Amplify Formsのライフサイクルダイアグラム

  1. 初期状態 - 入力フィールドは空であるか、提供されたデフォルト値に基づいて事前入力されます。

ユースケース: ユーザーがクリアまたはリセットボタンをクリックすると、この状態に戻ります。

  1. onChange - フォームデータがユーザーによって変更されたときのイベント。

ユースケース: これを使用して、ユーザーの各入力後のフォームデータを取得します。

  1. onValidate - カスタム検証のためのイベントフック。このイベントはonChangeの後にトリガーされます。

ユースケース: これを使用してコードを通じて検証ルールを拡張します。onValidateは非同期検証ルールもサポートしており、外部APIに対してフォーム入力を検証できます。

  1. onSubmit - ユーザーが送信ボタンをクリックしたときのイベント。

ユースケース: フォームがデータモデルに接続されていない場合、このイベントハンドラーを設定してフォームデータを取得します。フォームがデータモデルに接続されている場合、これを使用してクラウドに保存される前に提供されたフォームデータをカスタマイズします。

  1. onSuccess - フォームデータをクラウドに保存することが成功したときのイベント。

ユースケース: これを使用してフォームを閉じたり、フォーム送信が成功した後にユーザーを別のルートに移動させたりします。フォームがデータモデルに接続されている場合にのみ使用します。

  1. onError - フォームデータをクラウドに保存することが失敗したときのイベント。

ユースケース: これを使用してエラーをログに記録し、検証ルールを改善する必要があるかどうかをさらに調査します。フォームがデータモデルに接続されている場合にのみ使用します。

  1. onCancel - ユーザーがキャンセルボタンをクリックしたときのイベント。

ユースケース: これを使用してフォームを閉じ、フォームデータを保存しないようにします。

ユーザーがデータを入力するときのフォームデータの取得 - onChange

場合によっては、ユーザーがフォームを記入しているときにリアルタイムでフォームデータを取得したいことがあります。onChangeイベントはfieldsパラメータでフォームデータを提供します。

import { useState } from 'react'
import { HomeCreateForm } from './ui-components'
function App() {
const [formData, setFormData] = useState()
return (
<HomeCreateForm onChange={fields => setFormData(fields)}/>
)
}

コードで検証ルールを拡張する - onValidate

onValidateイベントを使用して、コード内で検証ルールを拡張できます。詳細については、検証ルールを追加する方法をご覧ください。

フォームデータ送信を処理する - onSubmit

onSubmitはフォーム送信を処理するデフォルトの方法です。ユーザーが送信アクションボタンをクリックするたびにトリガーされます。

onSubmitハンドラーを使用して、フォームデータをクラウドに保存する前にカスタマイズできます。onSubmitハンドラーから返されたフォームデータがクラウドに保存されます。

たとえば、保存前にすべての文字列データをトリムする場合:

<HomeCreateForm
onSubmit={(fields) => {
const updatedFields = {}
Object.keys(fields).forEach(key => {
if (typeof fields[key] === 'string') {
updatedFields[key] = fields[key].trim()
} else {
updatedFields[key] = fields[key]
}
})
return updatedFields
}}
/>

フォームデータがクラウドに正常に保存されたときを処理する - onSuccess

onSuccessハンドラーを使用して、フォームデータが正常に送信された後にアクションを実行できます。以下の例は、フォームが正常に送信された後にフォームを非表示にします。

import { useState } from 'react'
import { HomeCreateForm } from './ui-components'
function App() {
const [showForm, setShowForm] = useState(true)
return (
{showForm &&
<HomeCreateForm onSuccess={() => {
setShowForm(false) // フォームを非表示にする
}}/>}
)
}

フォーム送信エラーを処理する - onError

送信プロセス中に追加のエラーが発生する可能性があります。onErrorハンドラーを使用してこれらのエラーをログに記録し、顧客にアラートを表示できます。

import { HomeCreateForm } from './ui-components'
function App() {
return (
<HomeCreateForm onError={(error) => {
console.log(error)
}}/>
)
}

ユーザーがキャンセルアクションボタンをクリックしたときを処理する - onCancel

ユーザーがキャンセルアクションボタンをクリックした場合、onCancelイベントを使用してフォームを非表示にするか、顧客を別のページにルートできます。

import { useState } from 'react'
import { HomeCreateForm } from './ui-components'
function App() {
const [showForm, setShowForm] = useState(true)
return (
{showForm &&
<HomeCreateForm onCancel={() => {
setShowForm(false) // フォームを非表示にする
}}/>}
)
}