Reactで双方向バインディングを実装

Reactで双方向バインディングを実装

Reactで双方向バインディングを実装するためには、コンポーネントの状態を管理し、その状態をUIに反映し、UIの変更を状態に反映する必要があります。
以下に、TypeScriptを使用した例を示します。

ソースコード例

import React, { useState } from 'react';

interface FormData {
  name: string;
  age: number;
}

const TwoWayBindingComponent: React.FC = () => {
  const [formData, setFormData] = useState<FormData>({ name: '', age: 0 });

  const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
    const { name, value } = e.target;
    setFormData({
      ...formData,
      [name]: name === 'age' ? Number(value) : value,
    });
  };

  return (
    <div>
      <div>
        <label>
          名前:
          <input
            type="text"
            name="name"
            value={formData.name}
            onChange={handleInputChange}
          />
        </label>
      </div>
      <div>
        <label>
          年齢:
          <input
            type="number"
            name="age"
            value={formData.age}
            onChange={handleInputChange}
          />
        </label>
      </div>
      <div>
        <h3>入力内容</h3>
        <p>名前: {formData.name}</p>
        <p>年齢: {formData.age}</p>
      </div>
    </div>
  );
};

export default TwoWayBindingComponent;

この例では、useStateフックを使用してフォームデータを管理しています。
フォームの各フィールドの変更はhandleInputChange関数で処理され、状態が更新されます。
また、UIは状態に基づいて更新されます。

まとめ

  • useStateフックを使用してコンポーネントの状態を管理。
  • handleInputChange関数を使用して、フォームフィールドの変更を状態に反映。
  • valueプロパティを使用して、状態をフォームフィールドに反映。

これで、ReactとTypeScriptを使用した双方向バインディングの基本的な実装が完了です。