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 の基本的な使い方

推薦する

HTML テーブルの境界線を設定する際のヒント

HTML を初めて使用する多くの人にとって、テーブル <table> は最もよく使用され...

MySQLクエリ文の実行プロセスの詳細な説明

目次1. クライアントとサーバー間の通信方法2. クエリキャッシュ3. クエリ最適化処理4. クエリ...

Centos8でdockerがインストールできない問題の解決方法

問題 [root@zh ~]# [root@zh ~]# [root@zh ~]# yum -y d...

HTMLタグのtarget属性の使用法

1: <a> タグを使用してページにリンクする場合、target 属性の役割は誰もが知っ...

Vue でログインと登録テンプレートを実装するためのサンプルコード

テンプレート 1: ログイン.vue <テンプレート> <p class=&quo...

Linux と最もよく使用されるコマンドの紹介 (習得は簡単ですが、問題の 95% 以上を解決できます)

Linux は現在最も広く使用されているサーバー オペレーティング システムです。Unix をベー...

Server-U 14バージョンのインストールと使用方法

Server-Uソフトウェアの紹介Server-U は非常に強力なファイル マネージャーです。FTP...

js キャンバスは検証コードを実装し、検証コード機能を取得します

この記事の例では、検証コードを作成して取得するためのjsキャンバスの具体的なコードを共有しています。...

XHTML CSS ウェブサイトデザインの利点と問題点

XHTML は現在国際的に推奨されている標準的な Web サイト設計言語です。Webjx.com も...

HTMLでは、全体的なスタイルとレイアウトを崩さずに、部分的に強制スクロールバーを使用できます。

まずはエフェクト画像を投稿します:全体的なスタイルとレイアウトが崩れないように、スクロール バーがロ...

スライドドアを実装するための CSS サンプルコード

いわゆるスライディングドアテクノロジーとは、さまざまな長さのテキストに合わせてボックスの背景を自動的...

MySQL 5.7.18のインストール方法とMySQLサービスの起動手順の詳細な説明

MySQL は非常に強力なリレーショナル データベースです。しかし、初心者の中には、インストールや設...

docker公式mysqlイメージのカスタム構成の詳細な説明

インストール時間を節約するために、公式の mysql docker イメージを使用して mysql ...

MySQL は低速クエリを可能にします (EXPLAIN SQL ステートメントの使用の概要)

今日、データベース操作はますますアプリケーション全体のパフォーマンスのボトルネックになりつつあり、こ...

canvas.toDataURL image/png エラー処理方法の推奨

問題の背景:再生中のビデオのスクリーンショットを撮る必要があります。ビデオはビデオタグを使用して再生...