您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Vuex中常用知識點有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
vuex中常用的一些知識點
一、為什么要使用Vuex
1、多個組件依賴同一個狀態,使用組件之間通信方法會非常繁瑣,例如多層嵌套組件。
2、需要全局保存的數據,例如用戶、權限信息,全局系統設置
二、Vuex的五個核心屬性
1、state:存儲狀態
// store.jsconst store = new Vuex.Store({ state: { count: 0 }});// 組件里獲取count值$store.state.count
2、getters:state作為第一個參數,其他getters作第二個參數,返回值會根據他的依賴緩存起來,相當于Vue的計算屬性
// store.jsconst store = new Vuex.Store({ state: { count: 1, sum: 2 }, getters: { getCountAndSum: (state,getters) => { return state.count + state.sum; } }});// 其他組件獲取getter$store.getters.getCountAndSum
3、mutations:修改狀態(同步的),state 作為第一個參數,提交載荷作為第二個參數
const store = new Vuex.Store({ state: { count: 1 }, mutations: { increment (state, obj) { state.count += obj.n; } }});// 其他組件調用mutations的方法$store.commit('increment', {n: 100});
4、actions:異步操作(執行mutations的方法,不是直變更狀態)
const store = new Vuex.Store({ state: { count: 1 }, mutations: { increment (state, obj) { state.count += obj.n; } }, actions: { increment (context) { context.commit('increment'); } }});// 其他組件調用actions的方法$store.dispatch('increment');
5、modules:store的子模塊
const a = { state: { count: 0 }, getters: { getCount2 (state, getters, rootState) { return state.count + 2; } }, mutations: { increment (state, getters, rootState) { state.count++; } }, actions: { increment (context) { // context.state.count; // context.rootState.count; context.commit('increment'); } }};const b = {};const store = new Vuex.Store({ modules: { a, b }});// 其他組件調用 (獲取state的變量需要加上引入的module的別名)$store.state.a$store.state.b
三、Vuex輔助函數
<template> <div class="about"> <h2>count: <span>{{count}}</span></h2> <h2>getCount: <span>{{$store.getters.getCount}}</span></h2> <h2>sum: <span>{{sum}}</span></h2> <h2>getSum: <span>{{$store.getters.getSum}}</span></h2> <button @click="clickB">test </button> </div></template><script>import {mapState, mapGetters, mapMutations, mapActions} from 'vuex'; export default { name: 'about', data () { return { count: 0, sum: 0 } }, computed: { ...mapState({ count: state => state.count, countAlias: 'count', countPlusLocalState (state) { return state.count + this.localCount; } }), ...mapGetters([ 'getCount', 'getSum' ]) }, mounted () { this.count = this.$store.state.count; this.sum = this.$store.state.a.sum; }, methods:{ ...mapMutations( 'add','addO' ), ...mapActions([ 'add','addO' ]), clickB () { this.$store.dispatch('add'); this.$store.dispatch('addO'); } } }</script>
感謝各位的閱讀!關于“Vuex中常用知識點有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。