Vue3 の SetUp 関数のプロパティとコンテキスト パラメータの詳細な説明

Vue3 の SetUp 関数のプロパティとコンテキスト パラメータの詳細な説明

1. setUp関数の最初のパラメータprops

セットアップ(プロパティ、コンテキスト){}

最初のパラメータのプロパティ:

Props は、親コンポーネントから子コンポーネントに渡されるすべてのデータを含むオブジェクトです。

子コンポーネントで受け取るには props を使用します。

構成によって宣言され渡されたすべてのプロパティを含むオブジェクト

つまり、親コンポーネントから子コンポーネントに渡された値を props を通じて出力したい場合です。

構成を受け取るには props を使用する必要があります。つまり、props:{......}

Propsを通じて設定を受け入れない場合、出力値は未定義になります。

<テンプレート>
  <div class="box">
    親コンポーネント</div>
  <no-cont :mytitle="メッセージ" 
      othertitle="他の人のタイトル"
      @sonclick="sonclick">
  </no-cont>
</テンプレート>

<script lang="ts">
「../components/NoCont.vue」からNoContをインポートします。
エクスポートデフォルト{
  設定 () {
    メッセージを = {
      タイトル:「親コンポーネントから子コンポーネントへのデータ」
    }
    関数sonclick(msss:文字列){
      コンソール.log(msss)
    }
    {msg,sonclick} を返す
  },
  コンポーネント:{
    続きなし
  }
}
</スクリプト>
<テンプレート>
    <div @click="sonHander">
        私は子コンポーネントのデータです</div>
</テンプレート>

<script lang="ts">
'vue' から {defineComponent,setup} をインポートします。
エクスポートデフォルトdefineComponent({
  名前: 'NoCont'、
 // 受け入れられません // props:{
 // タイトル:{
 // タイプ:オブジェクト
 // }
 // },
  セットアップ(プロパティ、コンテキスト){
    console.log('props==>',props.mytitle);//出力値は未定義です
    関数sonHander(){
        context.emit('sonclick','子コンポーネントが親コンポーネントに渡されます')
    }
    {sonHander} を返す
  }
});
</スクリプト>

props.mytitle によって出力される値が未定義なのはなぜですか?

受信構成に props を使用しなかったためです。今すぐ

小道具:{
    私のタイトル:{
        タイプ:オブジェクト
    }
},

受け入れ設定を追加すると

2. パラメータコンテキストの説明

2 番目のパラメータ: context はオブジェクトです。

attrs (現在のタグオブジェクトのすべての属性を取得) があります

ただし、このプロパティはすべてのオブジェクトを受け取るために props で宣言されていません。

propsを使用して値を取得し、propsで取得したい値を宣言する場合

すると、得られる値は未定義になります

注記:

attrs の値を取得するために、props で受信を宣言する必要はありません。

最初のパラメータpropsはpropsで宣言する必要がある値を取得します

発行イベント配布があります(イベントを使用して親コンポーネントに渡す必要があります)

スロットがあります

<テンプレート>
    <div @click="sonHander">
        私は子コンポーネントのデータです</div>
</テンプレート>

<script lang="ts">
'vue' から {defineComponent,setup} をインポートします。
エクスポートデフォルトdefineComponent({
  名前: 'NoCont'、
  小道具:{
      私のタイトル:{
          タイプ:オブジェクト
      }
  },
  セットアップ(プロパティ、コンテキスト){
    //出力 {title: 親コンポーネントから渡された値}
    コンソールにログ出力します。
    
    // 他の人のタイトルを出力します [値を取得するにはコンテキストを使用します。値を受け入れるためにプロパティを使用する必要はありません]
    console.log('context==> ',context.attrs.othertitle);
    
    // コンテキストは受け入れるために props を使用する必要がないため、undefined を出力します。
    console.log('contextmytitle==> ',context.attrs.mytitle);
    関数sonHander(){
        context.emit('sonclick','子コンポーネントが親コンポーネントに渡されます')
    }
    {sonHander} を返す
  }
});
</スクリプト>

3. 子コンポーネントが親コンポーネントにイベントをディスパッチする

<テンプレート>
    <div @click="sonHander">
        私は子コンポーネントのデータです</div>
</テンプレート>

<script lang="ts">
'vue' から {defineComponent,setup} をインポートします。
エクスポートデフォルトdefineComponent({
  名前: 'NoCont'、
  小道具:{
      私のタイトル:{
          タイプ:オブジェクト
      }
  },
  セットアップ(プロパティ、コンテキスト){
    関数sonHander(){
        context.emit('sonclick','子コンポーネントが親コンポーネントに渡されます')
    }
    {sonHander} を返す
  }
});
</スクリプト>

4. イベントディスパッチを最適化する

2番目のパラメータcontextはオブジェクトであることが分かっています

オブジェクトには3つの属性 attrs、slots、emit があります

イベントがディスパッチされたら、emitを使用するだけです

<テンプレート>
    <div @click="sonHander">
        私は子コンポーネントのデータです</div>
</テンプレート>

<script lang="ts">
'vue' から {defineComponent,setup} をインポートします。
エクスポートデフォルトdefineComponent({
  名前: 'NoCont'、
  小道具:{
      私のタイトル:{
          タイプ:オブジェクト
      }
  },
  セットアップ(props,{attrs,slots,emit}){
    // イベントを直接ディスパッチするには、emit を使用します。function sonHander(){
        emitting('sonclick','子コンポーネントが親コンポーネントに渡されます')
    }
    {sonHander} を返す
  }
});
</スクリプト>

5. 親コンポーネントから渡された値を取得する

propsパラメータを使用して値を取得します

そして値を取得するためにattrsを使用します

<テンプレート>
<hr/>
   <h2>サブコンポーネント</h2>
    <div @click="sonHander">
        私は子コンポーネントのデータです</div>
    <h2>props 宣言を使用して ==>{{ mytitle } を受け取ります}</h2> 
    <h2>パラメータ attrs を使用して ==>{{ attrs.othertitle } を取得します}</h2> 
</テンプレート>

<script lang="ts">
'vue' から {defineComponent,setup} をインポートします。
エクスポートデフォルトdefineComponent({
  名前: 'NoCont'、
  小道具:{
      私のタイトル:{
          タイプ:オブジェクト
      }
  },
  セットアップ(props,{attrs,slots,emit}){
    関数sonHander(){
        emitting('sonclick','子コンポーネントが親コンポーネントに渡されます')
    }
    {sonHander,attrs} を返します
  }
});
</スクリプト>

セットアップ機能を使用する際に注意すべき点がいくつかあります。

  • セットアップ関数はbeforeCreateとcreatedの間で実行されます。
  • セットアップは作成中に実行されるため、コンポーネントは作成されたばかりで、データとメソッドはまだ初期化されていないため、データとメソッドはセットアップでは使用できません。
  • セットアップではこれは未定義を指します
  • セットアップは同期のみ可能で、非同期は不可

要約する

Vue3 の SetUp 関数の props と context パラメータに関するこの記事はこれで終わりです。Vue3 の SetUp 関数のパラメータに関するより詳しい内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue3 親子コンポーネント値転送における props 使用の詳細の簡単な分析
  • Vue のコンポーネントの props 使用方法の詳細な説明
  • Vueのコンポーネントのprops属性について詳しく説明します
  • Vue3 での props コンポーネントの抽出

<<:  NginxにLuaモジュールを追加する方法

>>:  MySQL ユーザーと権限、およびルートパスワードをクラックする方法の例

推薦する

JS を使用してファイルを操作する (FileReader は --node の fs を読み取ります)

目次JS はファイルを読み取る FileReader書類イベントとメソッド基本的な使い方イベント処理...

HTMLエンコードによる文字化け問題について

今日、3年生から質問がありました。彼が書いた HTML コードを開くと、文字化けした文字が表示されま...

MySQL 5.7.15 のインストールと設定方法のグラフィック チュートリアル (Windows)

MySQL をインストールする必要があるため、インストール手順を以下のように記録します。 自分なり...

ページ内にマーキーとフラッシュが共存する場合の競合解決

競合の主な症状は、FLASH ボタンがジャンプし続け、不安定になり、Web ページの外観と通常のアク...

モバイル端末での Vue2.x Picker のグローバル呼び出し実装

目次ピッカーコンポーネントとはピッカーコンポーネントの問題解決オプションの説明解決ディレクトリ部門P...

1 つの記事で Nginx の現在の制限を理解する (簡単な実装)

Nginx は現在、最も人気のあるロード バランサーの 1 つです。インターネット トラフィックの...

Docker ログが多すぎてディスクがいっぱいになる場合の対処方法

複数の Docker コンテナがデプロイされたサーバーがあり、各 Docker コンテナが stde...

MySQL 5.7.23 のインストールと設定方法のグラフィックチュートリアル

この記事では、参考として MySQL 5.7.23 のインストール チュートリアルを記録します。 1...

CSS3 を使用して円形スクロール プログレス バー アニメーションを作成する例

テーマ今日は、CSS3 を使用して円形スクロール プログレス バー アニメーションを作成する方法を説...

MySQL ロックの知識ポイントのまとめ

ロックの概念①. 現実世界では、鍵は外の世界から身を隠したいときに使う道具です。 ②. コンピュータ...

Xiaomi公式サイトの登録・ログイン機能を模倣するJavaScript

目次まずページレイアウトを構築する必要がありますJS関数1 JS関数2 JS関数3 JS関数4効果図...

フロートをクリアするための CSS メソッドの概要

フロートはWebページのレイアウトでよく使用されますが、フローティングブロックレベル要素は標準のドキ...

バージョン管理ツール Rational ClearCase の紹介

Rational ClearCase は、コードやその他のソフトウェア開発資産のバージョン管理を実...

Docker共通コマンドの詳しい解説 Study03

目次1. ヘルプコマンド2. ミラーコマンド3. コンテナコマンド1. ヘルプコマンド1. 現在のD...

HTML テーブル マークアップ チュートリアル (6): 暗い境界線の色属性 BORDERCOLORDARK

表では、右下の境界線の色を個別に定義したり、セルの左上の境界線の色を定義したりできます。これら 2 ...