-
フィールドエラーの検出: フォームのバリデーションを実行し、フィールドごとのエラーを検出します。通常、エラーは状態変数またはオブジェクトとして管理されます。
-
スクロールの実装: フィールドエラーが検出された場合、対応するフィールドまたはエラーメッセージのDOM要素を特定します。これには、各フィールドに一意のIDを割り当てることが役立ちます。
以下は、Reactのクラスコンポーネントでの例です。
class MyForm extends React.Component { constructor(props) { super(props); this.state = { errors: {}, }; this.formRef = React.createRef(); } scrollToFieldError = (fieldId) => { const fieldElement = document.getElementById(fieldId); if (fieldElement) { fieldElement.scrollIntoView({ behavior: 'smooth', block: 'center' }); } }; handleSubmit = (event) => { // フォームのバリデーションを実行し、エラーを検出するロジックを実装する // エラーが検出された場合 if (hasErrors) { this.setState({ errors: fieldErrors }); // 最初のエラーフィールドにスクロールする const firstErrorField = Object.keys(fieldErrors)[0]; this.scrollToFieldError(firstErrorField); } event.preventDefault(); }; render() { const { errors } = this.state; return ( <form ref={this.formRef} onSubmit={this.handleSubmit}> {/* 各フィールドの実装 */} <input id="field1" type="text" /> {errors.field1 && <div>{errors.field1}</div>} <input id="field2" type="text" /> {errors.field2 && <div>{errors.field2}</div>} {/* ...他のフィールド */} </form> ); } }
上記の例では、
scrollToFieldError
メソッドを使用してエラーフィールドにスクロールしています。fieldId
を受け取り、getElementById
を使用して対応するDOM要素を取得し、scrollIntoView
メソッドを使用してスクロールします。フォームの
<form>
要素にref
を追加し、handleSubmit
メソッド内でscrollToFieldError
メソッドを呼び出すことで、エラーが検出された場合に自動的にスクロールが発生します。これにより、Reactでフィールドエラーのスクロールを実装することができます。