スポンサーリンク

【React】useContextの使い方ご紹介。〜 Props渡しの省略が可能に 〜

TypeScript
スポンサーリンク

今回の記事はTypeScriptベースのReactプロジェクトでのuseContextの使い方をご紹介する記事です。コンポーネント管理になると必要な値はPropsで渡すのが基本ですが、量や階層によってPropsのバケツリレーになり管理が複雑化します。これを防ぐため、useContextは非常に有用な手段です。初心者にもわかりやすいように記載していくので是非使用できるようになりましょう

スポンサーリンク

TypeScriptのReactプロジェクト作成

node等がインストールされてない方はインストールして下さい。その前提で話を進めます。

npx create-react-app sample --template typescript

まずは上記で「sample」プロジェクトを作成します。

cd sample
npm start

これでローカルサーバが立ち上がって初期画面が表示できます。

ではuseContextを使用して行きましょう。

useContextの使い方

今回の実装の流れは下記です。

  1. Props渡しするコンポーネントを用意する
  2. useContextを使う
  3. ビルド

Props渡しするコンポーネントを用意する

適当な名前のファイル(コンポーネント名)を決めてファイルを作成します。今回は「Component1」とします。

「src」フォルダに「Component.tsx」を作成します。

export default function Component1() {
  return (
    <label>Component1を表示</label>
  );
}

このコンポーネントを「src/App.tsx」から呼び出すと下記のような記述です。

import Component1 from "./Component1";

export default function App() {

  return (
    <Component1 />
  );
}

ここにPropsを入れると下記のように2ファイルを書き換えます。

type Component1Props = {
    test1:string
}

export default function Component1(props:Component1Props) {
  return (
      <div>
        <label>Component1を表示</label>
        <label>{props.test1}</label>
      </div>
  );
}
import Component1 from "./Component1";

export default function App() {

  return (
    <Component1 test1={'テスト1のProps'} />
  );
}

一旦これでbuildすると画面UIはさておき、Propsが受け渡されているのが確認できるはずです。ではいよいよこちらにuseContextを実装していきます。

useContextを定義

親階層にあたる「src/App.tsx」を下記のように記述します。

import Component1 from "./Component1";
import React from 'react';

export const sampleContext = React.createContext('')

export default function App() {

  return (
    <sampleContext.Provider value={'サンプルコンテキスト'}>
        <Component1 />
    </sampleContext.Provider>
    
  );
}

今回は文字列を初期値にしておりますが、オブジェクトも管理できるのでフォーム管理とも相性抜群です。

少し解説をしておくと下記で親から伝播するコンテキストを定義。

export const sampleContext = React.createContext('')

伝播させる範囲は下記なのでプロバイダーの中にコンポーネントを入れればそのコンポーネントではコンテキストで値を取得できるというわけです。


<sampleContext.Provider value={'サンプルコンテキスト'}>
        <Component1 />
    </sampleContext.Provider>

useContextを取得

ではuseContextを受け取る側の記述を記載します。

import {useContext} from 'react'
import { sampleContext } from './App';

export default function Component1() {

    // 受け取るコンテキスト
    const context = useContext(sampleContext)
    
    return (
      <div>
        <label>Component1を表示</label>
        <label>{context}</label>
      </div>
  );
}

少し解説します。

// 受け取るコンテキスト
    const context = useContext(sampleContext)

上記の部分がコンテキストを受け取る部分です。受け取った後は自由に使用できることができます。

では今回の記事は以上です。他にも多数のReact関連の記事を記載しているので是非興味ある型はサイト内みていってください。

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

TypeScript
スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました