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 プロキシを使用してインターネットを閲覧する方法

推薦する

MySQL ストアド プロシージャと共通関数のコード分析

mysql ストアド プロシージャの概念:特定のタスク (クエリと更新) を実行できる、データベース...

ラベルとボタンを削除し、背景画像の点線/影を追加すると完璧な解決策になります

ユーザーが登録すると、ラベルをクリックして確認コードを変更します。クリックするとラベルに影の部分がで...

HTML ファイルにフラッシュ ビデオ形式 (flv、swf) ファイルを埋め込む方法

Flash ファイル形式: .FLV および .SWFフラッシュ ビデオ形式には、.flv と .s...

Vue+Springbootでインターフェースシグネチャを実装するためのサンプルコード

1. 実装のアイデアインターフェース署名の目的は、リクエストパラメータが改ざんされていないか、リクエ...

データページング効果を実現する js オブジェクト

この記事の例では、データのページング効果を実現するためのjsオブジェクトの具体的なコードを参考までに...

複数のプロジェクトをデプロイする Docker nginx の例

前提条件1. ローカルコンピュータとサーバーにDockerがインストールされています。ダウンロード方...

react-navigation6.xルーティングライブラリの基本的な使い方の詳しい説明

目次react-nativeプロジェクトの初期化react-nativeプロジェクトをインストールす...

CentOS 8 カスタム ディレクトリ インストール nginx (チュートリアルの詳細)

1. ツールとライブラリをインストールする# PCRE は、Perl 互換の正規表現ライブラリを含...

SQL 挿入文の書き方の説明

方法 1: INSERT INTO t1(field1,field2) VALUE(v001,v00...

JS 面接の質問: forEach はループから抜け出すことができますか?

この質問をされたとき、私は無知で頭が真っ白になりました。もちろん、正しく答えられませんでした。私はず...

VirtualBox CentOS7.7.1908 Python3.8 ビルド Scrapy 開発環境 [グラフィックチュートリアル]

目次環境CentOSをインストールするyum 国内ミラーソースを構成するサードパーティの依存関係をイ...

MySQL のユニークインデックスと通常のインデックスのどちらを選択すればよいでしょうか?

ユーザー テーブルを設計するときに、各人の ID 番号が一意であり、検索する必要があるシナリオを想像...

Mysql の varchar 型に関する注意点

varchar の保存ルール4.0 未満のバージョンでは、varchar(20) は 20 バイトを...

Centos8 で Apache httpd2.4.37 を使用して Web サーバーをインストールする詳細な手順

ステップ 1: yum install httpd -y #httpd サービスをインストールします...

IDEA で mysql8.0.3 と mybatis-generator を使用する際に発生するバグ

1. プラグインを追加し、pomファイルの下に次の設定を追加します。 <!-- mybatis...