📘

propsの基本(React)

2024/11/12に公開

はじめに

Reactのコンポーネント間で値をやり取りする場合の方法の一つであるpropsについて学んだので、備忘録として使用例を交えながら解説を残したい。(間違っていたらコメント下さい。修正します。)

そもそもReactのpropsとは。

簡潔に言うと、"コンポーネント間の値のやり取りを可能にするもの"です。

useStateとの違い

似たような状態の管理方法に、useStateがありますが、useStateで管理できるのはコンポーネント内の値だけなのでコンポーネントを跨いでグローバルに値をやり取りする場合にはpropsやcontextなど、他の方法で対応する必要があります。

イメージとして、、

具体的には、親コンポーネントから子コンポーネントへデータを渡すことが可能で、イメージとしては、川の上流の家(親コンポーネント)から下流の家(子コンポーネント)へ向かって船に乗った人(props)が新聞(値)を渡していく感じでしょうか。

使用例(基本)

基本的な使用例を以下にまとめます。

構造

src
├─ App
└─ Test

App(親コンポーネント)

App
import Test from "./Test";
export default function App() {
 const Testdate: string = "test";
  return (
    <div>
      <Test date={Testdate} />
    </div>
  );
}

Test(子コンポーネント)

interface TestProps {
  date: string;
}
export default function Test(props: TestProps) {
  return (
    <div>
        <p>{props.date}</p>
    </div>
  );
}

出力結果

test

解説

  • App
    親コンポーネントであるAppでは、const Testdate: string = "test";で渡したい値を定義しています。今回は文字列型"test"をTestdataに格納しています。
    また、return ( <div> <Test date={Testdate} /> </div> );でpropsとして渡す値(Testdata変数)を定義しています。
  • Test
    子コンポーネントであるTestでは、インタフェースでデータ型を定義しておき、それを引数に与えます。function Test(props: TestProps) {
    returnとして、<p>{props.date}</p>{props.date}を呼び出すことで親コンポーネントからデータが取得できます。
  • 出力結果
    親コンポーネント(App)のTestdateに格納したtestが子コンポーネントであるTestに渡されて出力されました。
確認

当たり前ですが、<p>{props.date}</p>を削除すると、何も出力されません。

Test.tsx
interface TestProps {
  date: string;
}
export default function Test(props: TestProps) {
  return (
    <div></div>
  );
}
渡す値を変えてみる

const Testdate: string = "Hello";Testdateに格納する文字を"Hello"に変更すると、出力結果が変わります。

App.tsx
import Test from "./Test";
export default function App() {
  const Testdate: string = "Hello";
  return (
    <div>
      <Test date={Testdate} />
    </div>
  );
}

出力結果
Hello

学べたこと

  • propsを使用したコンポーネント間の値のやり取りを学ぶことができた。
  • コンポーネント設計の重要性が少しわかった気がする。

Discussion