Vue コンポーネント (Vuex を含む) 間の値の転送に関する簡単な説明

Vue コンポーネント (Vuex を含む) 間の値の転送に関する簡単な説明

Vuex を使用せずにコンポーネント間で値を渡す方法は、親から子、または兄弟コンポーネントを介して行われます。

父から息子へ:

父親コンポーネント:

<テンプレート>
    <div>
        <HELLOWORLD :needData="コンテンツ"></HELLOWORLD>
    </div>
</テンプレート>

<スクリプト>
'../components/HelloWorld.vue' から HELLOWORLD をインポートします。
エクスポートデフォルト{
    コンポーネント:{
        こんにちは世界
    },
    データ(){
        戻る {
            コンテンツ:"コンテンツ"
        }
    }
}
</スクリプト>

<style lang="less" スコープ>

</スタイル>

SonComponent (サブコンポーネント名は HELLOWORLD):

<テンプレート>
    <div>
        <h1>ハローワールド</h1>
    </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
    プロパティ:["needData"],
    データ(){
        戻る {
            H:this.needData、
        }
    },
    マウントされた(){
        コンソールにログ出力します。
    }
}
</スクリプト>

<style lang="less" スコープ>

</スタイル>

ここに画像の説明を挿入

息子から父へ:

父親コンポーネント:

<テンプレート>
    <div>
        <HELLOWORLD @sendData="getData"></HELLOWORLD>
    </div>
</テンプレート>

<スクリプト>
'../components/HelloWorld.vue' から HELLOWORLD をインポートします。
エクスポートデフォルト{
    コンポーネント:{
        こんにちは世界
    },
    データ(){
        戻る {
            
        }
    },
    方法:{
        getData(sonData){
            console.log("データ=>",sonData);
        },
    }
}
</スクリプト>

<style lang="less" スコープ>

</スタイル>

息子コンポーネント:

<テンプレート>
    <div>
        <h1>ハローワールド</h1>
    </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
    データ(){
        戻る {
            コンテンツ:"コンテンツ"
        }
    },
    マウントされた(){
        this.$emit("sendData",this.content);
    }
}
</スクリプト>

<style lang="less" スコープ>

</スタイル>

効果画像:

ここに画像の説明を挿入

実際、親コンポーネントと子コンポーネント間でデータを転送するには、親コンポーネントの関数または子コンポーネントの関数を呼び出すことによってデータを転送することもできます。 Vueでは、子コンポーネントが親コンポーネントの関数を呼び出す。

https://www.jb51.net/article/134732.htm

Vue親コンポーネントは子コンポーネントの関数を呼び出す

https://www.jb51.net/article/219793.htm

Vuex は Vue フレームワークの不可欠な部分です。

Vuex は、複数のコンポーネント間の通信が必要な場合に特に重要です。たとえば、親コンポーネントでデータが生成されるが、そのデータをサブコンポーネントのサブコンポーネントで使用する必要がある場合、Vuex を使用して管理できます。また、兄弟コンポーネント間で値を渡す必要がある場合にも、Vuex を使用できます。

Vue の store.js には 5 つのプロパティがあります。
これらは、状態、ミューテーション、アクション、ゲッター、およびモジュールです。

構造は次のとおりです。

a={とする
  州: {
  	名前:"モジュールA"
  },
  //ミューテーションは特に状態属性のデータを変更するために使用されます。ミューテーション: {
  	setFun(状態、項目){
		状態名=アイテム;
	}
  }
}

デフォルトの新しいVuex.Storeをエクスポートします({
  //state はデータの保存専用ですstate: {
  	数:100,
  	コンポーネントを使用する:{
		名前:"A",
	},
	useBcomponent:"コンテンツ",
  },
  //ミューテーションは特に状態属性のデータを変更するために使用されます。ミューテーション: {
  	setStateFun(状態、項目){
		state.useBcomponent="Bコンポーネント";
	}
  },
  アクション: {
  	httpGetData(ストア、アイテム){
		タイムアウトを設定します(()=>{
			console.log(アイテム);
			store.commit("setStateFun",アイテム);
		},3000)
	}
  },
  ゲッター:{
  //ゲッター内の関数を呼び出すときにパラメータは渡されません getterFun1(state){
		state.num++ を返す
	}
  //ゲッターで関数を呼び出す場合、入力パラメータがあります gettterFun2(state){
		関数を返す(val){
			state.num+=val を返します。
		}
	}
  },
  モジュール:
  	モジュールA:a
  }
});
}

状態内のデータは、さまざまなコンポーネントからアクセスできます。

状態データを取得します:

this.$store.state.state オブジェクト内のデータ。
たとえば、let val = this.$store.state.num;

状態データを変更するには、Vuex の変異オブジェクト内の関数を呼び出すだけです。

this.$store.commit("関数名","データ");
たとえば、 this.$store.commit("setStateFun","testSetItem");

Vuex でリクエストを行うために使用されるアクション オブジェクト

this.$store.dispatch("関数名","データ");
たとえば、 this.$store.dispatch("httpGetData","testItem");

Vueの計算プロパティに似たゲッターオブジェクト

this.$store.getters.関数名;
たとえば、パラメータが入力されていない場合は this.$store.getters.getterFun1;
//入力パラメータがある場合 this.$store.getters.getterFun2(123);

モジュール オブジェクトは、使用する必要があるストア モジュールを分離することに似ています。各モジュール オブジェクトはモジュールに対応します。

//モジュール オブジェクトの状態データを取得します。this.$store.state.modules オブジェクト名.state 値;
たとえば this.$store.state.ModuleA.name
//モジュール オブジェクトのミューテーション関数を使用します。this.$store.commit("関数名","入力パラメータ データ");
たとえば、 this.$store.commit("setFun","itemabc");
//ここで注意すべき点は、モジュールモジュールと外部(モジュールオブジェクトモジュールではない)のミューテーションオブジェクトに同じ名前の関数がある場合、呼び出されたときに同じ名前の両方の関数が実行されるということです。

これで、Vue コンポーネント (Vuex を含む) 間の値の転送について簡単に説明したこの記事は終了です。Vue コンポーネント間の値の転送に関する詳細なコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueのコンポーネント間で通信して値を渡すいくつかの方法の詳細な説明
  • Vue コンポーネント間で値を渡す方法をどうやって知っていますか?
  • Vue3 における非親子コンポーネントの値転送の詳細な説明
  • Vue3 における親コンポーネントと子コンポーネント間の値の転送の詳細な説明
  • Vue の親子コンポーネントの値転送と一方向データフローの問題の詳細な説明
  • 非常にシンプルでわかりやすいvueコンポーネントの値転送

<<:  Linux (CentOS7) で RPM を使用して MySQL 8.0.11 をインストールするチュートリアル

>>:  MySQL における UNION と UNION ALL の基本的な使い方

推薦する

MySQLインデックスの詳細

1. インデックスの原則インデックスは、列内の特定の値を持つ行をすばやく見つけるために使用されます。...

Vue は左右のスライド効果のサンプルコードを実装します

序文個人の実際の開発で使用した効果問題を、今後の開発やレビューに役立てるためにまとめています。他の人...

Vue 実践における実用的な小さな魔法のまとめ

初回の読み込みを高速化できるルートの遅延読み込みをどうして忘れられるでしょうか?ルーティングの遅延読...

MySQL 上級学習ノート (パート 3): MySQL 論理アーキテクチャの紹介、MySQL ストレージ エンジンの詳細な説明

MySQL 論理アーキテクチャの概要他のデータベースと比較すると、MySQL は、そのアーキテクチャ...

Vueでブラウザタイトルを動的に設定する方法の詳細な説明

目次ナンセンス文章最初ルーター/index.js 2番目1. プラグインをインストールする2.mai...

「@INC で ExtUtils/MakeMaker.pm が見つかりません」というエラーを解決する

mha4mysql をインストールする場合の手順は、おおよそ次のようになります: unzip、per...

MAC で MySQL の初期パスワードを変更する方法

問題の説明: Macを購入し、初めてMySQLをインストールしました。初期パスワードが分かりません。...

CSS グリッドレイアウトで列にアイテムを埋め込む方法

n 個のアイテムがあり、これらのアイテムをグリッド レイアウトの列に並べ替える必要があるとします。列...

クリック範囲を拡大する入力チェックボックスを実装する方法

XML/HTML コードコンテンツをクリップボードにコピー< div style = &quo...

nginxのデフォルトポートを変更する方法の詳細な説明

まず設定ファイルがどこにあるか調べる nginx.confはどこにありますかこれらのディレクトリを調...

HTML で vue-router を使用するサンプル コード

vue と vue-router の紹介 <script src="https://...

MySQL でコミットされていないトランザクションを見つけるための SQL の例の簡単な分析

以前、「MySQL でコミットされていないトランザクション情報を検索する方法」というタイトルのブログ...

Nginx Linux のインストールと展開の詳細なチュートリアル

1. Nginx の紹介Nginxは負荷分散やリバースプロキシにも使えるWebサーバーです。現在最も...

Vueコンポーネントの詳細な説明

<本文> <div id="ルート"> <h2&...

HTML内の画像はbase64でエンコードされた文字列に直接置き換えられます

最近、画像はあるのに外部画像リソースが参照されていないウェブページを見つけました。気になりました。コ...