vuex的使用

一:src目录下新建store目录用来写vuex的各个模块

二:store目录下新建state.js文件,该文件内写将要用vuex存储的数据,目前先存储一个登录状态login和角色role

state

三:store目录下新建mutations.js文件,该文件用来定义  修改state.js内部的数据  的函数

mutations

 想要修改 state.js内部定义的变量,必须用mutations.js内部相应的方法进行修改

四:store目录下新建actions.js,

使用场景:比如我们一个h5商城,后端会在登录成功的的接口中返回cookie以及角色类型,然后将cookie自动存储在浏览器的缓存中;在登录成功之前,我们都是无cookie去后端请求数据,用户看到的信息也是未登录才能看到的信息;一旦登录成功,cookie已经存储在浏览器中,这时候请求中就可以带上cookie,用户就可以看到登录之后的信息。

像这种权限判断,我们需要在全局路由中进行判断,角色请求这块可以actions中封装,因为每个页面可能都涉及权限的判断(有cookie直接请求权限接口,设置role;没cookie,在登录成功进行跳转的时候,设置role),封装起来用着更方便

五:store目录下新建index.js文件

index

六:在项目的入口文件main.js中引入store/index.js文件,然后在vue实例中进行注入

import store from './store'

main

此时我们就可以去相应的组件内部 获取 或者 修改 vuex存储的数据

login.vue

调用mutations可以使用...mapMutations,这样相当于给方法其一个别名;我们也可以使用this.$store.commit('SET_LOGIN',  true);异步使用actions,调用方式是 thiiis.$store.dispatch('actionsFnName')


上面是修改vuex中的login值,那看一下如何获取vuex的login值

login.vue

可以根据以上两种方式进行获取,vuex内部的值放在computed可以实现数据的实时变化;当然也可以通过this.$store.state.login进行获取。


对于actions的使用场景,可能一两句说不清楚。很多地方都说的是  异步存储用actions,但是异步的可以直接在回调中调用mutation,为什么要把异步的业务逻辑放在acrions中去实现,而不是直接在页面的对应逻辑中实现

同步调用的用mutation,当涉及到异步调用且有复用可能的,或者有将业务逻辑封装起来的需要用action,异步无复用可能的直接使用mutations即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。