vue中的状态管理(全局变量)-vuex
vuex是一个状态管理插件,理解开来就是vue中的全局变量,非常轻量级,但是需要注意的是刷新以后就清除了,所以很多东西在vuex中还要注意在缓存中存储。
首先我们主要了解一个vuex的主要属性
核心仓库是store(state,mutations,actions,getter,modules)。
action 提交mutation,而不是直接更改状态废话不多说,我们来看看vuex的使用情况:
action 可以包括异步操作,mutation只能同步
modules将store分割成模块(modules),每个模块拥有自己的(state,mutations,actions,getter); 方便维护
store 改变状态时通过 (commit) mutations
getter 全局获取
mutations :改变store中变量的唯一方法
一:首先我们需要安装vuex
npm install vuex --save二:我们需要在src目录下新建一个store文件夹,并且新建一个index.js的文件
import Vuefrom 'vue';这里我们用引入模块的方式来进行数据操作。
import Vuexfrom 'vuex';
import app from './modules/app';
import user from './modules/user';
import permission from './modules/permission';
import getters from './getters';
Vue.use(Vuex);
const store =new Vuex.Store({
modules: {
user
},
getters
});
export default store
同时我们在store文件夹中新建一个module的文件夹,并且新建一个user.js
文章图片
在user中我们写一个获取token的方法
首先我们定义一下token
const user = {然后我们写一个方法来赋值token,这个方法必须要写在mutations中
state: {
token:‘’
}
}
export default user;
mutations: {我们写一个外部方法,可以让外部调用修改token
SET_TOKEN: (state, token) => {
state.token = token;
}
}
actions: {在提交mutations修改store的时候可以用commit同步提交,也可以用dispatch异步提交
SaveToken({
commit
}, token) {
commit('SET_TOKEN',token);
}
}
这样我们就把token保存在里store中
三:为了方便获取,我们来重写一个getters
在store文件夹中新建一个getters.js,将token写进去
const getters = {四:我们需要在main.js中引入vuex
token: state => state.user.token
};
export default getters
import store from './store';五:在页面中保存token
//实例化 store
new Vue({
el: '#app',
store,
router,
template: '',
【vue中的状态管理(全局变量)-vuex】components: { App }
})
只需要在别的页面中调用
this.$store.dispatch('SaveToken',“token”).then((res) => {res是如果有回调的数据,可以在vuex中
}
文章图片
使用resolve回调,reject是报错回调。
六:保存好了,我们可以进行获取了
在页面中引入getter
import { mapGetters }from 'vuex';在计算属性中
computed: {这样就相当于吧token注册到了data中了,可以随便用了
...mapGetters([
'token'
])
}
推荐阅读
- 热闹中的孤独
- JS中的各种宽高度定义及其应用
- vue-cli|vue-cli 3.x vue.config.js 配置
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- 2020-04-07vue中Axios的封装和API接口的管理
- Android中的AES加密-下
- 放下心中的偶像包袱吧
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解