store
state :对数据的全局存储 getter: 可以理解为computed ,对数据进行计算 mutations :对数据的同步更改 actions:对数据的异步更改
mounted: {
console.log(this.$store);
/*payLoad 所有的参数对象 {a:aa,b:bb}*/
/*调用mutation方法*/
this.$store.commit("mutationsFun", payLoad)
/*调用action 方法*/
this.$store.dispatch("ActionsFun",payLoad)
},
computed: {
counter() {
return this.$store.state.count;
}
}
辅助函数
import
{
mapState,
mapGetter,
mapMutation,
mapAction
}
[
computed: {
... mapState ( [ 'count' ] )
... mapState ( {
counter: 'count'
} )
... mapState ( {
counter: ( state) => state. count
} )
... mapGetters ( [ "fullName" ] )
}
methods:{
... mapActions ( [ 'ActionsFuncName' ] )
... mapMutations ( [ 'MutationsFuncName' ] )
}
]
modules模块
modules 子state ,加入对应的作用域 子模块中的方法参数state 作用域为子模块
modules: {
AModule: {
getters: {
textPlus ( state, getters, rootState) {
return state. AModuleStateVar + rootStore. textVar + rootStore. BModule. StateVar
}
} ,
actions: {
add ( state, commit, rootState) {
commit ( "mutationName" , 参数对象, {
root: true
} ) ;
commit ( "OtherMudule/mutationName" , 参数对象, {
root: true
} )
}
}
}
}
mounted:
{
this . [ "AModuleName/ActionFunName" ] ( 参数对象)
this . [ "AModuleName/MutationFunName" ] ( 参数对象)
}
computed: {
textA ( ) {
return this . $store. state. AModule. stateVar
}
... mapState ( {
counter: ( state) => state. AModule. stateVar
} )
... mapGetters ( [ "AModuleName/GetterFunName" ] )
... mapGetters ( {
rootGetterFunName: 'rootGettterFunName' ,
AModuleGetterFunName: "AModuleName/GetterFunName"
} )
}
methods: {
... mapActions ( [ 'AModule/ActionsFuncName' ] )
... mapActions ( [ ' AModuleNameActionsFuncName' ] )
... mapMutations ( [ 'AModule_MutationsFuncName' ] )
... mapMutations ( [ 'AModuleName/AModule_MutationsFuncName' ] )
}
动态注册模块功能
import store from "./store" ;
store. registerModule ( "CModule" , {
state: ...
action: ...
} )
store. unRegisterModule ( "CModule" )
开发过程中store会更新里面的action等内容,开发页面则会不断刷新
import Vue from 'vue'
import Vuex from 'vuex'
import mutations from './mutations'
import moduleA from './modules/a'
Vue. use ( Vuex)
const state = {
...
}
const store = new Vuex. Store ( {
state,
mutations,
modules: {
a: moduleA
}
} )
if ( module. hot) {
module. hot. accept ( [ './mutations' , './modules/a' , ... ] , ( ) => {
const newMutations = require ( './mutations' ) . default
const newModuleA = require ( './modules/a' ) . default
.
.
.
store. hotUpdate ( {
mutations: newMutations,
modules: {
a: newModuleA
}
.
.
.
} )
} )
}
Store API
store. watch ( ( state) = ? state. count+ 1 , ( newCounter) => {
} )
store. subscribe ( ( mutation, state) => {
console. log ( mutation. type)
console. log ( mutation. payLoad)
} )
store. subscribeAction ( ( action, state) => {
console. log ( action. type)
console. log ( action. payLoad)
} )
Store Plugin
plugin 可以顺序执行,每一个plugin就是一个方法
new Vuex. Store ( {
strict: true ,
plugins: [ ( store) => {
console. log ( "my plugin invorked" )
} ]
} )
其他
new Vuex. Store ( {
strict: process. env. NoDE_ENV=== 'development'
} )
链接官网
原文链接