实例化
let store = new Vuex.Store({
state:{},
getters:{},
mutations:{},
actions:{}
})
-
state
1) 作用维护状态,customers、visible...
2) 定义
state:{ customers:[], visible:false }
3)使用
1. 通过状态机实例对象直接访问 store.state.customers 2. 如何在vue实例中访问(通过计算属性映射) new Vue({ el:"", store, //注入store data:{}, computed:{ customers:function(){ return this.$store.state.customers; } } })
-
mutation
1) 作用唯一修改state值的机制,并且只能是同步操作
2) 定义
state:{ customers:[] } mutations:{ refreshCustomers(state,customers){ } } state是vuex实例化并且传递给突变,customers属于该突变一个载荷对象(参数)
3) 使用
store.commit("refreshCustomers",[1,2,3])
-
action
1) 作用封装异步操作,不能直接更新state,必须借助mutation来进行更新
2) 定义
actions:{ async findAllCustomers(context){ let response = await axios.get(); context.commit("refreshCustomers",response.data.data) }, // id async deleteCustomerById(context,payload){ let response = await axios.get("",payload); context.dispatch("findAllCustomers") } } context是一个与store对象解构相似的对象,包含了commit、dispatch、getters、state
3) 使用
store.dispatch(actionName,payload)
-
模块化
let customer = { namespaced:true, state:{ list:[], visible:false }, getters:{ }, mutations:{ }, actions:{ } }, let category = { namespaced:true, state:{ list:[], visible:false }, getters:{ }, mutations:{ }, actions:{ } } let store = new Vuex.Store({ modules:{ customer, category } }) new Vue({ computed:{ ...Vuex.mapState("customer",["list"]) } })
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。