Reactで子から親へ値を渡す方法
Reactで子コンポーネントから親コンポーネントに値を渡すには、親コンポーネントがコールバック関数を作成し、それを子コンポーネントに引数(props)として渡す方法が一般的です。
Reduxなどを使用してグローバルステートで管理もできますが、今回はコンポーネントの階層を通してバケツリレーをする方式です。
以下はその具体例です。
コード例
Parent.tsx
import React, { useState } from 'react'; import Child from './Child'; const Parent: React.FC = () => { // 子コンポーネントから受け取った値を格納するstate const [value, setValue] = useState<string>(''); // 子コンポーネントから受け取った値を親コンポーネントのstateに格納 const handleValueChange = (newValue: string) => { setValue(newValue); }; return ( <div> <p>子コンポーネントから渡された値: {value}</p> <Child onValueChange={handleValueChange} /> </div> ); }; export default Parent;
Child.tsx
import React, { useState } from 'react'; interface ChildProps { // 親コンポートから渡されたコールバック関数 onValueChange: (value: string) => void; } const Child: React.FC<ChildProps> = ({ onValueChange }) => { const [inputValue, setInputValue] = useState<string>(''); const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => { const newValue = e.target.value; setInputValue(newValue); // 親コンポーネントのコールバック関数に引数を渡して実行 onValueChange(newValue); }; return ( <div> <input type="text" value={inputValue} onChange={handleInputChange} /> </div> ); }; export default Child;
説明
1. Parent.tsx
- handleValueChange 関数を定義し、これを子コンポーネントに引数(props)として渡します。
- value ステートを管理し、子コンポーネントからの値を表示します。
2. Child.tsx
- onValueChangeを受け取り、入力が変更されたときに親コンポーネントに新しい値を渡します。
このようにして、子コンポーネントから親コンポーネントに値を渡すことができます。