初识vuex,觉得很是抽象, 根据系统分析学习后,自我理解(个人主见)
Vuex:其实本身Vuex可以看做是一个类似原型的样子,将很多可以共享的东西(按照项目需求),例如用户登录的状态等,而原型在个人看来,可能跟现在的云计算的“云”,有点相似,将开源的,共享的东西放到云上,可以去拿,也可以减轻本地服务器的压力;
首先,下载vuex这个插件,实例化缺不一定是vue,而是其中的store对象
const store=new Vuex.store({ ****** })
state----(引用)---->组件(组件可获取状态,最好不直接更改,直接更改vue插件查不到)
组件-------->(dispatch)----->Actions----(commit)------>Mutations----->state
Actions其实可以忽略,但是有异步操作,最好在Actions里做,主要Actions做发送网络请求
mutations一般就是相当于methods 一般有默认的参数就是state 可以不用this 参数就是state,拿数据,就是state.数值;而在相对应的组件里面,怎么拿到对应的vuex里面的Mutation?
也是事件方法里面 this.$store.commit("方法名")
如果mutation想传参,就是组件里面,传参,mutation接受
ps:用第二种方法提交风格就是一个对象
接下来就是Vuex的核心概念(state,getters,mutation,action,module)
单一数据源:意思就是最好只用一个store, 而不是每个组件用一个
getters(类似于计算属性):getters跟mutation一样,也有默认的参数state,
使用:$store.getters.名字
getters是可以嵌套的,第二参数可以是getters,可以拿前getters一个方法加以处理入
如果想自己传参,可以先return function(){}
Action 里面的默认参数缺不是state,而是context(可以理解为store对象)
ps:action只能发动异步操作,但是一定要用mutation来改值 context.commit("mutation里 的方法")
而组件发动异步请求,组件里面this.$store.dispatch("",可加参数)