React TypeScriptでの子コンポーネントの受け渡し方法


  1. プロップスを使用する方法: Reactでは、親コンポーネントから子コンポーネントにデータを渡すためにプロップス(props)と呼ばれるメカニズムを使用します。以下は、プロップスを使用して子コンポーネントにデータを渡す基本的な方法の例です。

親コンポーネント:

import React from 'react';
import ChildComponent from './ChildComponent';
const ParentComponent: React.FC = () => {
  const data = 'Hello, child component!';
  return <ChildComponent data={data} />;
};
export default ParentComponent;

子コンポーネント:

import React from 'react';
interface ChildProps {
  data: string;
}
const ChildComponent: React.FC<ChildProps> = ({ data }) => {
  return <div>{data}</div>;
};
export default ChildComponent;
  1. コンテキストを使用する方法: コンテキスト(Context)を使用すると、親コンポーネントと子コンポーネント間でデータを受け渡すことができます。以下は、コンテキストを使用した子コンポーネントの受け渡し方法の例です。

親コンポーネント:

import React from 'react';
import { MyContext } from './MyContext';
const ParentComponent: React.FC = () => {
  const data = 'Hello, child component!';
  return (
    <MyContext.Provider value={data}>
      <ChildComponent />
    </MyContext.Provider>
  );
};
export default ParentComponent;

子コンポーネント:

import React, { useContext } from 'react';
import { MyContext } from './MyContext';
const ChildComponent: React.FC = () => {
  const data = useContext(MyContext);
  return <div>{data}</div>;
};
export default ChildComponent;
  1. Reduxを使用する方法: Reduxは、アプリケーション全体での状態管理を容易にするためのライブラリです。Reduxを使用すると、親コンポーネントと子コンポーネント間で状態を共有することができます。以下は、Reduxを使用した子コンポーネントの受け渡し方法の例です。

親コンポーネント:

import React from 'react';
import { useDispatch } from 'react-redux';
import { setData } from './redux/actions';
const ParentComponent: React.FC = () => {
  const dispatch = useDispatch();
  const data = 'Hello, child component!';
  dispatch(setData(data));
  return <ChildComponent />;
};
export default ParentComponent;

子コンポーネント:

import React from 'react';
import { useSelector } from 'react-redux';
const ChildComponent: React.FC = () => {
  const data = useSelector((state) => state.data);
  return <div>{data}</div>;
};
export default ChildComponent;

これらはReact TypeScriptで子コンポーネントを受け渡すための一般的な方法のいくつかです。適切なシナリオに応じて、最適な方法を選択してください。