美文网首页vueVue全家桶vue
vue 中使用vuex和localStorage保存登录状态

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

作者: 拾钱运 | 来源:发表于2019-04-19 00:03 被阅读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

    相关文章

      网友评论

        本文标题:vue 中使用vuex和localStorage保存登录状态

        本文链接:https://www.haomeiwen.com/subject/hanxgqtx.html