1.9 KiB
1.9 KiB
備品編集フォーム修正完了
修正内容
問題
備品編集フォームで既存のデータが表示されない問題
原因
React Hook FormとHeroUIコンポーネントの組み合わせで、reset()が正しく動作しない
解決策
-
reset()の代わりにsetValue()を使用- 各フィールドに個別に値を設定
- より確実なフォーム値の反映
-
明示的な
valueプロパティの設定- HeroUIコンポーネントに
valueを明示的に渡す watch()で取得した現在の値を使用
- HeroUIコンポーネントに
-
Controller使用時の改善
- Switch、Selectコンポーネントで明示的な値設定
- onChange時に
setValue()も同時実行
実装した変更
-
フォーム値設定:
setValue('name', item.name || '') setValue('label_id', item.label_id || '') // すべてのフィールドに個別設定 -
明示的value設定:
<Input {...register('name')} value={formValues.name || ''} /> -
ControllerでのSwitch/Select:
<Switch isSelected={formValues.is_disposed || false} onValueChange={(value) => { field.onChange(value) setValue('is_disposed', value) }} />
テスト方法
- 開発サーバー起動:
npm run dev - 備品一覧アクセス: http://localhost:5174/items
- 編集テスト: 既存備品の「編集」ボタンをクリック
- 確認: 全フィールドに既存データが表示される
デバッグ情報
開発モードでコンソールに以下が出力されます:
ItemForm Debug: { ... }- API取得状況Form values: { ... }- 現在のフォーム値Setting form values with item data: { ... }- 値設定処理
フォーム編集機能が正常に動作するはずです!