React PropTypesの設定

PropTypesとは

props(プロパティ)のチェックを行うものです。

※React入門はこちらからどうぞ

※こちらはUdemy
での学習メモです。

サンプルプログラム(型チェック)

import React, { Component } from 'react';
// ① PropTypesをimportしてください。
import PropTypes from 'prop-types';

const App = () => {
  // 画面に表示する内容を配列で定義
  const testArr = [
     {title: "name1", number: 1},
     {title: "name2", number: 3},
     {title: "name3"}
  ]
    return (
         // map()関数を用いて配列をLoop
         testArr.map((val) => {
           // 下で定義したComponent_test()を呼び出す。引数には配列の内容を指>定         
           return <Component_test props1={val.title} props2={val.number}/>
         })
    )
//  }

}

const Component_test = (val) => {
        // propsを受け取ってHTMLをreturn
        return <div>{val.props1}, {val.props2}</div>
}
Component_test.defaultProps = {
  // propsがない場合の初期値を設定
  props2: "default"
}
Component_test.propTypes = {
  // "props2"というpropsの型チェック
  props2: PropTypes.number
}

export default App;

↑では、2番目の引数props2が数値型であることをチェックしています。

以下のコマンドを実行して画面表示確認

% yarn start

3行目の引数が設定されていない配列がデフォルト値:”default”という文字列になっているため、コンソールに以下の様なワーニングメッセージが表示されています。

index.js:1 Warning: Failed prop type: Invalid prop `props2` of type `string` supplied to `Component_test`, expected `number`.

サンプルプログラム(必須チェック)

Component_test.defaultProps = {
  // propsがない場合の初期値を設定
//  props2: 99999
}
Component_test.propTypes = {
  // "props2"というpropsの型チェック
  props2: PropTypes.number.isRequired
}

↑のチェックに「isRequired」を追記し、一時的にデフォルト値の記述をコメントアウト(無効化)します。

3行目にprops2の値が設定されていないため、コンソールに以下の様なワーニングメッセージが出力されています。

Warning: Failed prop type: The prop `props2` is marked as required in `Component_test`, but its value is `undefined`.

コメントする