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

推薦する

HTMLデザインパターンの日々の勉強ノート

HTML デザインパターン学習ノート今週は主にHTMLデザインパターンを学びました。学習内容をまとめ...

Reactでaxiosを使用してリクエストを送信する一般的な方法

目次Reactにaxios依存関係をインストールして導入するGETリクエストにaxiosを使用するa...

IE8はマルチ互換モードを使用してWebページを正常に表示します

IE8には複数の互換モードがあります。 IE プラットフォームの設計者である Chris Wilso...

vueプロジェクトは特定の領域に透かしを描くことを実現する

この記事では、Vueを使用して特定の領域に透かしを描く方法を紹介します。具体的な内容は次のとおりです...

mysql 更新ケース更新フィールド値が固定されていない操作

特定のデータの一括更新処理において、特定のステータスが固定値に更新されるなど、更新するフィールドの値...

Vue ログインページ用の動的パーティクル背景プラグインの実装

目次動的パーティクル効果は次のとおりです。プラグインをインストールする動的パーティクル効果は次のとお...

ユーザーエクスペリエンスの概要

最近では、ソフトウェアやウェブサイトのいずれの作業であっても、設計時に「ユーザー エクスペリエンス」...

Linux システムで jmeter を実行し、ローカル メモリを最適化する方法の詳細な説明

1. Linuxシステムにクロスシステムファイル転送ツールをインストールするルートユーザーのルートデ...

Dockerリポジトリの一般的なコマンドの詳細な説明

ログイン dockerログインdocker login コマンドを実行し、ユーザー名、パスワード、メ...

ブラウザのURLの前に小さなアイコンを表示する方法

多くのウェブサイトを閲覧すると、ブラウザのアドレスバーの前に小さなアイコンがあり、ブラウザのタブの位...

Django が uwsgi+nginx プロキシで静的リソースにアクセスできない問題の解決方法

uwsgi+nginx プロキシ Django をデプロイする場合、uwsgi を使用したアクセスは...

JS ES6 非同期ソリューション

目次最初にコールバック関数を使用するes6 非同期処理モデルこの非同期モデルに合わせたAPI: pr...

Alibaba Cloud Server Ubuntu 上の Workbench が MySQL に接続できない問題の解決策 (テスト済み)

過去 2 日間、ワークベンチが Alibaba Cloud Server に接続できない問題を解決す...

リンクをクリックしたときに表示される点線のボックスを削除するいくつかの方法

削除する方法はいくつかあります:リンクを直接追加するonfocus="this.blur(...

フォーム検証機能を実装するためのネイティブ js

目次開発の際には、機能を段階的に分析して実装することで、明確な考え方を保つことができます。 1. フ...