vueVue全家桶vue

vue 中使用vuex和localStorage保存登录状态

2019-04-19  本文已影响272人  拾钱运

需求:刷新页面,登录状态不会因此改变

首先说一下vuex和localStorage的区别

1.实质区别
vuex存的是状态,存储在内存;localStorage是浏览器提供的接口,让你存的是接口,以文件的形式存储到本地
2.应用场景
vuex用于组件之间的传值,localStorage则主要用于页面之间的传值
3.永久性
当刷新页面时,vuex存储的值会丢失,localStorage不会
总结
localStorage可以代替vuex,对于不变的数据确实可以,但是当两个组件共同用以数据源,如果其中一个组件中的数据源改变,希望另一个组件响应变化,这时候就要选择用vuex。vuex是vue的状态管理机制,是方便组件之间通信的。一个组件的数据变化是会映射到使用这个数据的其他组件。而localStorage是本地存储,是将数据存储到浏览器的方法,一般在跨页面时使用。

注意:localStorage 保存对象的时候,需要先将对象转换成json字符串,然后获取的时候在转换成对象形式

vuex的使用

创建store文件夹

-store 文件夹
--actions.js
--getters.js
--muations.js
--sotre.js
或者


image.png

这样做可以减低代码的耦合度,方便以后维护与修改
然后需要将创建的.js export default 到出去一个变量
然后在index.js中 import getter from './getters'然后


image.png
store中需要保存三个变量isLogin 、currentUser、token
getter.js 中赋值的方式
image.png

mutations 对象中方法或者mutatios.js中


image.png

然后应用mutations修改数据写在actions方法中


image.png
接下来就是在登录成功的时候保存数据到本地和vuex中
这个是保存到vuex中可以如下

1.先引入 import {mapActions} from 'vuex'
2.在methods方法中


image.png
3.在需要将数据存储到vuex中的时候使用
image.png
注意:刷新的时候vuex数据会丢失所以在computed中

其上的this.isLogin 是store中的isLogin
这个时候需要引入vuex的时候改为
import {mapActions,mapGetters} from 'vuex'
然后在computed (计算属性中)

  ...mapGetters(['isLogin'])  //这样就可以直接this.isLogin获取vuex中的数据了

其次用meta 路由元信息做权限控制


image.png

然后在路由生命周期中判断


image.png
上一篇 下一篇

猜你喜欢

热点阅读