以下是Vue官网对于Vuex的定义:
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
从官方定义上看: Vuex提供了一个全部组件的状态(包含了数据和数据操作规则)的保存容器,由此组件的的状态的改变从组件抽离出来,保存到一个容器里面,由此极大提高代码复用能力和组件间通信能力。
state是整个的核心,保存了全部组件的组件的数据及其规则的容器。
指的我们使用的vue的组件,数据通过render函数渲染展示到Vue components上。
这里提供了组件与数据交互的方法,我们通过dispatch,调用vuex的里面的数据和方法,并把业务提交到Mutations里面。
通过此方法可以实现对Vuex的状态完成最终的修改
1.调用组件,将请求转发给Actions
2.由Actions具体解析请求(考虑与后端交互)
3.将请求提交到到Mutations处理
4.修改State状态
Vuex4默认支持Vue3,如果使用Vue2要使用Vuex3
npm install vuex@3
这里的main.js引用Vuex,并把Vuex抽取到store.js里面
import Vue from 'vue'
import Vuex from 'vuex'
//创建核心的store文件
//响应组件的动作
Vue.use(Vuex)
//这里规定了Vuex和组件的交互
const actions={
//context是包含了mutations的上下文状态,只有获取了上下文的状态才能提交修改
addGames:function(context,value){
console.log("接收的值",value)
context.commit('adds',value)}
}
//操作数据的状态
const mutations ={
adds(state,value){
console.log("修改值")
state.address=value
},
getSchool(state,value){
console.log("修改值",value)
state.shcool=value
return state.shcool
},
addInfo(state,value){
let nums = state.num
let obj = {id:nums,name:value}
state.datalist.push(obj)
state.num=state.num+1}
}
//保存数据
const state = {
address:"",
//固定值
shcool:"社会大学",
datalist:[],
num:0,
do:{
岗位:"编程",
工资:0
}
}
export default new Vuex.Store({
actions:actions,
mutations:mutations,
state:state,
getters
})
组件与Vuex交互也非常简单,只要记住:
触发修改的效果
为了方便实现对Vuex的数据的修改,vue提供了getters辅助函数,借助getters函数,可以方便对vuex的状态进行过滤修饰。
需要进行调用
mapState可以把vuex的state转变成为一个对象,置于计算函数里面,方便处理 。
这个辅助函数是用于简化vuex的代码,借助mapMutations可以实现vuex的mutations的方法。
初始化状态
添加学生后