Vuex状態管理のアクション非同期操作の詳細説明

藏色散人
リリース: 2022-08-10 15:30:01
転載
4727 人が閲覧しました

アクションの使い方

1. 基本知識

1. Mutation では非同期操作を実行しないでください。場合によっては、非同期でなければならないネットワーク リクエストなど、Vuex でいくつかの非同期操作を実行したいことがあります。この状況にどう対処するか?

アクションはミューテーションに似ていますが、アクションはミューテーションと置き換えるために使用されます。非同期操作のミューテーション。

Action の基本的な使用コードは次のとおりです:

[関連する推奨事項: vue.js ビデオ チュートリアル

]

コンテキストとは?

(1) コンテキストは、ストア オブジェクトと同じメソッドとプロパティを持つオブジェクトです。 ) つまり、コンテキストを渡してコミット関連の操作を実行でき、また context.state などを取得することもできます。 Vue コンポーネントでアクション メソッドを呼び出す場合は、dispatch

を使用する必要があります。同様に、ペイロードの受け渡しもサポートされます

3. アクションとプロミス

アクションでは、非同期操作をプロミスに配置し、成功または失敗後に、対応する解決または拒否を呼び出すことができます

2. 効果

ページ上で動作中のメソッドを呼び出します

##3. ディレクトリ構造

4. ソースコード

index.js

import { createStore} from 'vuex'


export default createStore({
	state: {
		counter: 0,
		info: {
		  name: 'kobe',
		  age: 40,
		  height: 1.98
		}
	},
	mutations: {
		updateInfo(state) {
		  state.info.name = 'coderwhy'
		}
	},
	actions: {
		aUpdateInfo(context, payload) {
		  return new Promise((resolve, reject) => {
		    setTimeout(() => {
		      context.commit('updateInfo');
		      console.log(payload);
		
		      resolve('1111111')
		    }, 1000)
		  })
		}
	},
	getters: { },
	modules: {}
})
ログイン後にコピー
App.vue
<template>
    <div >
        <h2>----------action: info对象的内容是否是响应式----------</h2>
        <h2>{{$store.state.info}}</h2>
        <button @click="updateInfo">修改信息</button>
    </div>
</template>
 
<script>
    import {    computed } from &#39;vue&#39;
    import {    useStore } from &#39;vuex&#39;
    export default {
        components: {
        },
        methods: {
            updateInfo() {
              this.$store.dispatch(&#39;aUpdateInfo&#39;, &#39;我是携带的信息&#39;)
                .then(res => {
                  console.log(&#39;里面完成了提交&#39;);
                  console.log(res);
                })
            },
              
        },
        setup() {
            return {
                  
            }
        }
    }
</script>
ログイン後にコピー

以上がVuex状態管理のアクション非同期操作の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート