vuexコアコンセプトの概要

セルフモチベーション

人々が逆境にあるとき、環境に適応する彼らの能力は驚くべきものです。人々は不幸に耐えることができ、また不幸を克服することもできます。なぜなら、人々には驚くべき可能性があり、それを使用することを決意している限り、困難を克服することができるからです。

コアコンセプトの概要

Vuexの主なコアコンセプトは次のとおりです。

  • 状態
  • 突然変異
  • アクション
  • ゲッター

状態

州は唯一の公開データソースを提供します。すべての共有データは、ストレージのためにストアの州に統合する必要があります

// 创建store 数据源,提供唯一公共数据
const store = new Vuex.Store({
    
    
	state:{
    
    count:0}
})

コンポーネントがStateのデータにアクセスするための最初の方法:

this.$store.state.全局数据名称

コンポーネントが状態にアクセスするための2番目の方法

// 1. 从vuex中按需导入 mapState函数
import {
    
    mapState} from 'vuex'

インポートしたばかりのmapState関数を使用して、現在のコンポーネントに必要なグローバルデータを現在のコンポーネントの計算された計算済みプロパティにマップします

// 2. 将全局数据,映射为当前组件的计算属性
computed :{
    
    
	...mapState(['count'])
}

突然変異

ミューテーションはストア内のデータを変更するために使用されます
ストア内のデータはミューテーションによってのみ変更でき、ストア内のデータを直接操作する
ことはできません。②操作は少し面倒ですが、すべての変更を一元的に監視できます。データ。
突然変異を定義する

// 定义Mutation
export default new Vuex.Store({
    
    
  state: {
    
    
    count: 0
  },
  mutations: {
    
    
    add(state) {
    
    
      //变更状态
      state.count ++
    }
  }
}

突然変異をトリガーする

// 触发mutation
methods:{
    
    
	handle1(){
    
    
		// 触发 mutations 的第一种方式
		this.$store.commit('add')
	}
}

ミューテーションがトリガーされたときに送信を渡すことができます

export default new Vuex.Store({
    
    
  state: {
    
    
    count: 0
  },
  mutations: {
    
    
    // state 代表state中的全局数据
    add(state,step) {
    
    
      //变更状态
      state.count+= step
    }
  }
}

突然変異をトリガーする

btnHandler2() {
    
    
      // 在调用 commit 函数,
      // 触发mutations 时携带参数
      this.$store.commit('addN', 3)
    }

this。$ store.commit()は、ミューテーションをトリガーする最初の方法であり、ミューテーションをトリガーする2番目の方法です。

// 1. 从vuex 中按需导入 mapMutation 函数
import {
    
    mapMutations} from 'vuex'

インポートしたばかりのmapMutations関数を使用して、必要なミューテーション関数を現在のコンポーネントのメソッドメソッドにマップします

methods:{
    
    
	...mapMutations(['add','addN'])
}

ここに画像の説明を挿入します

ここに画像の説明を挿入します
したがって、ミューテーションで非同期コードを記述することはできません

アクション

アクションは非同期タスクの処理に使用されます。
非同期操作でデータを変更する場合は、MutationではなくActionを使用する必要がありますが、Actionでは、Mutationを送信して間接的にデータを変更する必要があります。

// 定义 Action
const store = new Vuex.Store({
    
    
	// ...省略其他代码
	mutations: {
    
    
    add(state) {
    
    
      //变更状态
      //  不要在mutations 函数中执行异步操作
      // setTimeout(() => {
    
    
      //   state.count++
      // }, 100)
      state.count++
    },
	actions: {
    
    
    addAsync(context) {
    
    
      setTimeout(() => {
    
    
        context.commit('add')
      }, 1000)
    }
  }
}
methods: {
    
    
    // 异步 地让 count 自增加一
    btnHandler3() {
    
    
        // 这里的 dispatch函数 专门用来触发 action 
      // 触发 actions 的第一种方式
      this.$store.dispatch('addAsync')
    }
  }

アクションをトリガーするときにパラメーターを実行する非同期タスク

// 定义 Action
const store  = new Vuex.Store({
    
    
	// ... 省略其他代码
	mutations:{
    
    
		addN(state,step){
    
    
			state.count += step
		}
	},
	actions:{
    
    
		addNAsync(context,step){
    
    
			setTimeout(() =>{
    
    
				context.commit('addN',step)
			},1000)
	}
}
}
// 触发 Action
methods:{
    
    
	handle(){
    
    
		// 在调用 dispatch 函数,
		// 触发 actions 时携带参数
		this.$store.dispatch('addNAsync',5)
	}
}

アクションをトリガーする2番目の方法

this。$ store.dispatch()は、アクションをトリガーする最初のメソッドです

// 1. 从vuex 中按需导入mapActions 的函数
import {
    
    mapActions} from 'vuex'

インポートしたばかりのmapActions関数を使用して、必要なアクション関数を現在のコンポーネントのメソッドにマップします。

// 2. 将指定的actions 函数,映射为当前组件的methods方法
methods:{
    
    
	...mapActions(['addASync','addNASync'])
}

ゲッター

ゲッターは、ストア内のデータを処理して新しいデータを形成するために使用されます
①ゲッターは、Vueの計算プロパティと同様に、ストア内の既存のデータを処理して新しいデータを形成できます
②ストア内のデータが変更されると、ゲッターデータも変更されます変更に従ってください

// 定义 Getter
const store =new Vuex.Store({
    
    
	state:{
    
    
		count:0
	},
	getters: {
    
    
    showNum(state) {
    
    
      return '当前最新的数量是【' + state.count + '】'
    }
  }
})

ゲッターを使用する最初の方法

this.$store.getters.名称

gettIngを使用する2番目の方法

import {
    
    mapGetters} from 'vuex'
computed :{
    
    
	...mapGetters(['showNum'])
}

彼氏はガールフレンドを怒らせることはできません。彼氏が間違っているのでガールフレンドは怒っています。いずれにせよ、彼氏は間違っています。彼氏が間違っている場合、彼は喜んでガールフレンドからの罰を受け入れる必要があります。ガールフレンドのボーイフレンドと一緒に。ハンに唾を吐くだけで、ボーイフレンドはガールフレンドをもっと幸せにし、ガールフレンドのことを考え、翡翠を憐れんで大切にする方法を知って、ガールフレンドの世話をする必要があります。つづく。

おすすめ

転載: blog.csdn.net/weixin_50001396/article/details/114249956
おすすめ