hyperdashi-client/DEBUG_INSTRUCTIONS.md
2025-07-05 11:52:57 +09:00

1.9 KiB

備品編集フォーム修正完了

修正内容

問題

備品編集フォームで既存のデータが表示されない問題

原因

React Hook FormとHeroUIコンポーネントの組み合わせで、reset()が正しく動作しない

解決策

  1. reset()の代わりにsetValue()を使用

    • 各フィールドに個別に値を設定
    • より確実なフォーム値の反映
  2. 明示的なvalueプロパティの設定

    • HeroUIコンポーネントにvalueを明示的に渡す
    • watch()で取得した現在の値を使用
  3. Controller使用時の改善

    • Switch、Selectコンポーネントで明示的な値設定
    • onChange時にsetValue()も同時実行

実装した変更

  1. フォーム値設定:

    setValue('name', item.name || '')
    setValue('label_id', item.label_id || '')
    // すべてのフィールドに個別設定
    
  2. 明示的value設定:

    <Input
      {...register('name')}
      value={formValues.name || ''}
    />
    
  3. ControllerでのSwitch/Select:

    <Switch
      isSelected={formValues.is_disposed || false}
      onValueChange={(value) => {
        field.onChange(value)
        setValue('is_disposed', value)
      }}
    />
    

テスト方法

  1. 開発サーバー起動: npm run dev
  2. 備品一覧アクセス: http://localhost:5174/items
  3. 編集テスト: 既存備品の「編集」ボタンをクリック
  4. 確認: 全フィールドに既存データが表示される

デバッグ情報

開発モードでコンソールに以下が出力されます:

  • ItemForm Debug: { ... } - API取得状況
  • Form values: { ... } - 現在のフォーム値
  • Setting form values with item data: { ... } - 値設定処理

フォーム編集機能が正常に動作するはずです!