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 ユーザーと権限、およびルートパスワードをクラックする方法の例

推薦する

MySQLが2つのテーブルを関連付ける際のエンコードの問題と解決策

Mysqlが2つのテーブルを関連付けると、次のエラーメッセージが生成されます:照合順序の不正な組み合...

React+axios は github 検索ユーザー機能を実装します (サンプル コード)

負荷リクエスト成功リクエストに失敗しました cmdをクリックし、ファイルパスでEnterキーを押しま...

MySQL スケジュールされたデータベース バックアップ操作の例

この記事では、MySQL のスケジュールされたデータベース バックアップ操作の例について説明します。...

js でパズルゲームを実装する

この記事では、パズルゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内容は...

良い広告にはどのような特徴が必要ですか?

広告業は人間であることに似ていると言う人がいます。これは本当です。優れた広告には、優れた人間と同じよ...

表のセルの内容が超過した場合に省略記号効果を表示する(実装コード)

例示するフロントエンド開発では、セルの幅を制限し、コンテンツが制限を超える部分に省略記号を表示する必...

ffmpeg 中国語パラメータの詳細な説明

FFMPEG 3.4.1 バージョンパラメータの詳細使用方法: ffmpeg [オプション] [[入...

Net Core実装プロセス分析のDoc​​kerインストールと展開

1. Dockerのインストールと設定 #CentOS をインストールし、Docker パッケージを...

WangEditor リッチ テキスト コンポーネントを Angular でカプセル化する方法

リッチ テキスト コンポーネントは、Web プログラムで、特にブログやフォーラムなどの Web サイ...

CSS の複雑なセレクターと CSS のフォントスタイルと色属性の詳細な説明

これまでに CSS の基本的なセレクターをいくつか学習しましたが、今日は CSS の複雑なセレクター...

MySQL 5.7 解凍版のインストール、アンインストール、および文字化けしたコードの問題のグラフィック解決

1. 解凍版のインストール(1)圧縮パッケージをダウンロードし、ディスクの場所に解凍します。圧縮パッ...

Ubuntu で起動時に自動的に起動するシェル スクリプトを作成する (推奨)

スクリプトを書く目的は、さまざまなサービスを手動で起動しなくて済むようにすることです(怠惰のためでも...

Vue フロントエンドの Excel ファイルのエクスポートの詳細な実装計画

目次1. 技術の選択2. 技術的な実装vue-json-excelプラグインを使用して実装1. vu...

Vueのprovideとinjectの使い方と原則を分析する

まず、provide/inject を使用する理由について説明しましょう。祖父コンポーネントと孫コン...

MySQL における exists、in、any の基本的な使い方

【1】存在するループを使用して外部テーブルを 1 つずつクエリし、各クエリの存在する条件ステートメン...