- コールバック関数を使用する方法: 子コンポーネントでコールバック関数を定義し、親コンポーネントに渡すことで、子コンポーネントから親コンポーネントへデータを渡すことができます。
親コンポーネントの例:
import React from 'react';
import ChildComponent from './ChildComponent';
class ParentComponent extends React.Component {
handleDataFromChild = (data) => {
// 子コンポーネントからのデータを処理する
console.log(data);
}
render() {
return (
<div>
<ChildComponent onData={this.handleDataFromChild} />
</div>
);
}
}
export default ParentComponent;
子コンポーネントの例:
import React from 'react';
class ChildComponent extends React.Component {
sendDataToParent = () => {
const data = 'Hello from child component!';
this.props.onData(data); // 親コンポーネントにデータを渡す
}
render() {
return (
<div>
<button onClick={this.sendDataToParent}>データを送信</button>
</div>
);
}
}
export default ChildComponent;
- useContextフックを使用する方法: ReactのuseContextフックを使用すると、親コンポーネントでコンテキストを作成し、子コンポーネントから値を受け取ることができます。
親コンポーネントの例:
import React, { createContext, useContext } from 'react';
import ChildComponent from './ChildComponent';
const MyContext = createContext();
const ParentComponent = () => {
const handleDataFromChild = (data) => {
// 子コンポーネントからのデータを処理する
console.log(data);
};
return (
<MyContext.Provider value={handleDataFromChild}>
<ChildComponent />
</MyContext.Provider>
);
};
export default ParentComponent;
子コンポーネントの例:
import React, { useContext } from 'react';
import MyContext from './ParentComponent';
const ChildComponent = () => {
const handleData = useContext(MyContext);
const sendDataToParent = () => {
const data = 'Hello from child component!';
handleData(data); // 親コンポーネントにデータを渡す
};
return (
<div>
<button onClick={sendDataToParent}>データを送信</button>
</div>
);
};
export default ChildComponent;
これらは、Reactで子コンポーネントから親コンポーネントへのプロップスの受け渡し方法の一部です。他の方法としては、イベントのエミッターパターンやReduxなどの状態管理ライブラリを使用する方法があります。必要に応じて、適切なアプローチを選択してください。