Vue3 の父子値転送に関する簡単な説明

Vue3 の父子値転送に関する簡単な説明

父から息子へ:

1. 親コンポーネントのサブコンポーネントタグに、サブコンポーネントに渡されるデータ名 = "渡すデータ" を渡します。

ここでは、参考までに、親コンポーネントのデータを次のように定義します: fatherData 、

子コンポーネントが受信する必要があるデータは、sonData として定義されます。

// 親コンポーネント <テンプレート>
  <div class="about">
    {{父データ}}
    <!-- 父から息子へ-->
    <!-- 1. 親コンポーネントのサブコンポーネント タグで、次の内容を渡します: サブコンポーネントに渡されるデータ名 = "渡されるデータ" -->
    <children :sonData="父親のデータ"></children>
  </div>
</テンプレート>
 
<スクリプト>
「@/components/children」から子要素をインポートします。
「vue」から {defineComponent、reactive、toRefs } をインポートします。
エクスポートデフォルトdefineComponent({
  コンポーネント:{
    子供たち、
  },
名前:"について",
設定(){
  定数状態 = リアクティブ({
    父親データ: 「こんにちは」
  })
  戻る {
    ...toRefs(状態)
  }
}
 
})
</スクリプト>

2. サブコンポーネントは引き続きpropsを通じて受け取られ、テンプレートで使用されます。

ほとんどの場合、データは親コンポーネントから子コンポーネントに渡され、このデータに基づいて特定の機能またはリクエストデータが実行されます。

セットアップ フックでは、最初のパラメーター props は親コンポーネントから渡されたデータにアクセスできます。次に、関数内で、データは props を通じて操作されます。親コンポーネントから渡されたデータの名前。

セットアップ関数は、最初のパラメータとして props を受け取ります。props オブジェクトは応答性があります (一方向の親 -> 子)。watchEffect または watch は props の更新を監視し、応答します。 props オブジェクトを分解しないでください。そうすると、応答性が低下します。開発中、props オブジェクトはユーザー空間コードに対して不変であり、ユーザーが props を変更しようとすると警告がトリガーされます。

// サブコンポーネント <テンプレート>
  <div class="children">
    <!-- 3. サブコンポーネント テンプレートでの使用 -->
    {{sonData}}
  </div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
名前:"子供",
// 2. サブコンポーネントは props:["sonData"] を通じて props を受け取ります。
  セットアップ(props){
    関数 childrenbut(){
      // props.sonData は親コンポーネントから渡されたデータにアクセスできます console.log(props.sonData);
    }
    戻る {
      子供たちだが
    }
  }
}
</スクリプト>

息子から父へ:

1. サブコンポーネントは、セットアップの2番目のパラメータcontext.emitを通じてイベントをトリガーし、子から親への伝達を実現します。

コンテキスト コンテキスト オブジェクト。

// サブコンポーネント <テンプレート>
  <div class="children">
    {{sonData}}
    <!-- 1. トリガーイベント-->
    <button @click="childrenbut">子コンポーネント ボタン</button>
  </div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
名前:"子供",
  セットアップ(プロパティ、コンテキスト){
    関数 childrenbut(){
      console.log(コンテキスト);
      // 2. context.emit を使用して子から親にデータを渡します。 // 最初のパラメーターはメソッド名で、2 番目のパラメーターは渡されるデータです。context.emit("change",'world')
    }
    戻る {
      子供たちだが、
    }
  }
}
</スクリプト>

文脈は構造の形で記述することもできる

// サブコンポーネント <script>
エクスポートデフォルト{
名前:"子供",
  // 構造体を渡した後、emit を直接記述します {emit}
  セットアップ(props,{emit}){
    関数 childrenbut(){
      // context.emit を省略
      出力("change",'world')
    }
    戻る {
      子供たちだが、
    }
  }
}
</スクリプト>

要約する

vue3 では、親から子、子から親のいずれであっても、実際には vue2 と同じです。

考え方はほとんど同じですが、違いはvue3がパラメータを渡すためにさまざまなフックを呼び出す必要があることです。

以下もご興味があるかもしれません:
  • Vue の親子コンポーネントの値転送と一方向データフローの問題の詳細な説明
  • Vue 親子コンポーネントの相互値の転送と呼び出し
  • Vueの7つの値転送メソッドの詳細な説明
  • Vue の親子コンポーネントの値転送の落とし穴
  • vueの子コンポーネントと親コンポーネント間で値を渡す例
  • Vue 父子価値移転、兄弟価値移転、子父価値移転の詳細な説明

<<:  Docker ベースの Selenium 分散環境の構築

>>:  MySQL インポート csv エラーの 4 つの解決策

推薦する

js は、Element の入力コンポーネントのいくつかの機能を実装し、それをコンポーネントにカプセル化します (サンプルコード)

現在実装されているのは、基本的な使用方法、クリア可能なボックス、パスワードボックスです。参考リンク:...

Mysql マスタースレーブ サービスの実装例を構成する

Mysql マスタースレーブ サービスの実装例を構成する### メインデータベースmy.cnfを構成...

Linux テキスト検索コマンド find の詳細な使用方法

find コマンドは主にディレクトリやファイルを検索するために使用され、一致のために複数のパラメータ...

MySQL 5.7.17 のインストールと使用方法のグラフィックチュートリアル

MySQL は、スウェーデンの会社 MySQL AB によって開発され、現在は Oracle が所有...

CenOS6.7 mysql 8.0.22 のインストールと設定方法のグラフィックチュートリアル

CenOS6.7 は MySQL8.0.22 (推奨コレクション) をインストールします1. MyS...

Nginxにモジュールを動的に追加する方法

前面に書かれた多くの場合、現在のプロジェクトの状況とビジネスニーズに基づいて Nginx をインスト...

いくつかの面接の質問を使ってJavaScriptの実行メカニズムを調べる

目次前の単語同期と非同期前菜プレートを追加マクロタスク マイクロタスク約束しましょうタイマーを追加す...

JSはキャンバス技術を使用してeChartsの棒グラフを模倣します

Canvas は HTML5 の新しいタグです。js を使用して Canvas 描画 API を操作...

Linux での Makefile の書き方と使い方の詳細な説明

目次メイクファイルMakefile の命名とルールMakefile の仕組みMakefile変数Ma...

VMware 仮想マシンに Android x86 をインストールする方法

アプリをテストしたいが、それを携帯電話で実行したくない場合があります。この場合、仮想マシンを使用して...

一般的な XHTML タグの使用方法の紹介

XHTML には多くのタグがありますが、頻繁に使用されるのはごくわずかであり、習得する必要があるのは...

Docker を使用してフロントエンド アプリケーションをデプロイする方法

Dockerはますます普及しています。環境を軽量かつ柔軟に分離し、容量を拡張し、運用保守管理を容易に...

Dockerモードで起動したTomcatのホームページにアクセスすると404エラーが発生する

シナリオ: docker で tomcat を起動すると (Alibaba Cloud からダウンロ...

Windows SSHサーバーを簡単に構築するためのいくつかの手順

ここで言及されている SSH は Security Shell と呼ばれます。Linux をよく使用...

Docker 起動時の ES メモリ オーバーフローの解決方法

jvm.options ファイルを elasticsearch 構成に追加し、スタック サイズを変更...