Reactでpropsを使用する方法と制限する方法

Reactでpropsを使用する方法と制限する方法

コンポーネントの props (props はオブジェクトです)

機能: コンポーネントに渡されたデータを受信する 特徴:

  • コンポーネントにはあらゆるタイプのデータを渡すことができます
  • Props は読み取り専用オブジェクトです。プロパティの値を読み取ることしかできず、オブジェクトを変更することはできません。
  • 注意: クラス コンポーネントを使用する場合、コンストラクターを記述するときは、props を super() に渡す必要があります。そうしないと、コンストラクターでそれを取得できなくなります。

小道具

 <div id="test1"></div>
  <div id="test2"></div>
  <div id="test3"></div>
  <!-- react core ライブラリをインポート -->
  <script src="../js/react.development.js"></script>
  <!-- react-dom を導入して、DOM を操作するための react をサポートする -->
  <script src="../js/react-dom.development.js"></script>
  <!-- jsx を js に変換するには babel を導入します -->
  <script src="../js/babel.min.js"></script>
  <スクリプトタイプ='text/babel'>
  // コンポーネントを作成する class Person extends React.Component{
    与える() {
      console.log(これを);
      const{名前、年齢、性別} = this.props
      戻る(
        <ul>
          <li>名前: {name}</li>
          <li>性別: {sex}</li>
          <li>年齢: {age+1}</li>
        </ul>
      )
    }
  }
  // コンポーネントをページにレンダリングします ReactDOM.render(<Person name="jerry" age={19} sex="男" />,document.getElementById('test1'))
  ReactDOM.render(<Person name="tom" age={18} sex="女" />,document.getElementById('test2'))

  const p = {name:'老刘',age:18,sex:'女'}
  // ReactDOM.render(<人名={p.name} 年齢={p.age} 性別={p.sex} />,document.getElementById('test3'))
  
  ReactDOM.render(<Person {...p} />,document.getElementById('test3'))

  </スクリプト>

小道具の制限

prop-types.jsを必ずインポートしてください。そうしないとエラーが発生します。

<div id="test1"></div>
  <div id="test2"></div>
  <div id="test3"></div>
  <!-- react core ライブラリをインポート -->
  <script src="../js/react.development.js"></script>
  <!-- react-dom を導入して、DOM を操作するための react をサポートする -->
  <script src="../js/react-dom.development.js"></script>
  <!-- jsx を js に変換するには babel を導入します -->
  <script src="../js/babel.min.js"></script>
  <!-- コンポーネント タグの属性を制限するために使用される prop-types を導入します。導入後、世界にはもう 1 つのオブジェクト PropTypes があります -->
  <script src="../js/prop-types.js"></script>

  <スクリプトタイプ='text/babel'>
  // コンポーネントを作成する class Person extends React.Component{
    与える() {
      console.log(これを);
      const{名前、年齢、性別} = this.props
      戻る(
        <ul>
          <li>名前: {name}</li>
          <li>性別: {sex}</li>
          <li>年齢: {age+1}</li>
        </ul>
      )
    }
  }
  // 制限ルール Person.propTypes = {
    // 名前の内容を文字列に制限する isRequired は、内容が必須であり省略できないことを意味します name:PropTypes.string.isRequired,
    // 性別を文字列に制限する sex: PropTypes.string,
    // 年齢を数値に制限する age: PropTypes.number,
    // 発言を関数speak: PropTypes.funcに制限する
  }
  Person.defaultProps = {
    sex:'male', // 性別のデフォルト値は男性 age:18,
    話す: 関数() {
        [1]を返す;
    }
  }
  // コンポーネントをページにレンダリングします ReactDOM.render(<Person name="jerry" age={19} />,document.getElementById('test1'))
  ReactDOM.render(<Person name="tom" age={18} sex="女" />,document.getElementById('test2'))

  const p = {name:'老刘',age:18,sex:'女'}
  // ReactDOM.render(<人名={p.name} 年齢={p.age} 性別={p.sex} />,document.getElementById('test3'))
  
  ReactDOM.render(<Person {...p} />,document.getElementById('test3'))

  </スクリプト>

Vue のプロパティの制限

ご存知のこれらのタイプなど、コンポーネント プロパティの検証要件を指定できます。要件が満たされていない場合、Vue はブラウザ コンソールで警告を表示します。これは、他の人が使用するコンポーネントを開発する場合に特に役立ちます。

プロパティの検証方法をカスタマイズするには、文字列の配列ではなく、プロパティ値の検証要件を持つオブジェクトを提供できます。例えば:

Vue.component('my-component', {
  小道具: {
    // 基本的な型チェック (`null` と `undefined` はすべての型検証に合格します)
    propA: 数値、
    // 複数の可能な型 propB: [String, Number],
    // 必須の文字列 propC: {
      タイプ: 文字列、
      必須: true
    },
    // デフォルト値を持つ数値プロパティ: {
      タイプ: 数値、
      デフォルト: 100
    },
    // デフォルト値を持つオブジェクト propE: {
      タイプ: オブジェクト、
      // オブジェクトまたは配列のデフォルト値はファクトリー関数から取得する必要があります default: function () {
        戻り値: 'hello' }
      }
    },
    // カスタム検証関数 propF: {
      バリデータ: 関数 (値) {
        // この値は、次の文字列のいずれかと一致する必要があります。 return ['success', 'warning', 'danger'].indexOf(value) !== -1
      }
    }
  }
})

プロパティの検証が失敗すると、Vue (開発ビルド) はコンソール警告を生成します。

プロパティはコンポーネント インスタンスが作成される前に検証されるため、インスタンス プロパティ (データ、計算など) はデフォルト関数または検証関数では使用できません。

型チェック
type は、次のいずれかのネイティブ コンストラクターになります。

弦
番号
ブール
配列
物体
日付
関数
シンボル

さらに、type は、instanceof でチェックされるカスタム コンストラクターにすることもできます。たとえば、次のような既成のコンストラクターがあるとします。

関数 Person (firstName, lastName) {
  this.firstName = ファーストネーム
  this.lastName = 姓
}

以下を使用できます:

Vue.component('ブログ投稿', {
  小道具: {
    著者: 人物
  }
})

author プロパティの値が新しい Person によって作成されたことを確認します。

React における props の使用と制限に関するこの記事はこれで終わりです。React props の制限に関する詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Reactにおけるコンテキスト適用シナリオの分析
  • React Contextの理解と応用についてお話ししましょう
  • Reactコンテキストを使用してvueスロット関数を実装する
  • ReactのPropsの簡単な比較
  • Reactの3つの主要属性におけるpropsの使用の詳細な説明
  • Reactのコンテキストとプロパティの説明

<<:  MySQL がユーザー名とパスワードの漏洩を引き起こす可能性のある Riddle の脆弱性を公開

>>:  Nginx プロキシを使用してインターネットを閲覧する方法

推薦する

Vueは画像切り替え効果を実現

この記事の例では、画像切り替え効果を実現するためのVueの具体的なコードを参考までに共有しています。...

MySQL は重複データを削除して最小の ID ソリューションを維持します

オンラインで検索して重複データを削除し、ID が最小のデータだけを残します。方法は次のとおりです。 ...

HTMLを教える記事

アーティストになるつもりがない場合は、開発者として HTML を読んで、必要に応じて簡単な変更を加え...

MySqlはページクエリ機能を実装します

まず、ページ分割クエリを使用する理由を明確にする必要があります。データが膨大なため、すべてのデータを...

フォーム OnSubmit と input type=image の使用の概要

ここに <input type="image"> がある場合、この画...

Jsモジュールパッケージのエクスポートの使用法と違いにはインポートが必要

目次1. Commonjsのエクスポートとrequireの使用1.1 CommonJS エクスポート...

MySQL の完全バックアップ中に特定のライブラリを除外する方法

MySQLの完全バックアップを実行するときは、--all-databaseパラメータを使用します。例...

MySQLを水平から垂直に、垂直から水平に変換する方法

データの初期化 `test_01` が存在する場合はテーブルを削除します。 テーブル「test_01...

Pure CSS と Flutter はそれぞれブリージング ライト効果を実現します (サンプル コード)

前回、非常に熱心なファンから、月を呼吸する光の効果にできるかどうか尋ねられました。月の大きさの写真が...

echartsマップカルーセルハイライトを解決するための記事

目次序文やることリストやるだけ地図を準備するインスタンスをバックアップ用に保存するタイマーカルーセル...

Reactはページング効果を実装する

この記事では、Reactでページング効果を実現するための具体的なコードを参考までに紹介します。具体的...

MySQLのMERGEストレージエンジンの詳細な説明

MERGE ストレージ エンジンは、MyISAM テーブルのグループを論理ユニットとして扱い、同時に...

Linux nohup コマンドの原理と例の分析

nohup コマンドUnix/Linux を使用する場合、通常はプログラムをバックグラウンドで実行す...

JavaScript PromiseとAsync/Awaitの詳細な説明

目次概要4つの例例1: 誕生日で説明する約束の基本例2: 数字当てゲーム例3: Web APIから国...

MySQL でコミットされていないトランザクションを見つけるための SQL の例の簡単な分析

以前、「MySQL でコミットされていないトランザクション情報を検索する方法」というタイトルのブログ...