美文网首页Vue专题
Vuex持久化 &vue组件设置背景色

Vuex持久化 &vue组件设置背景色

作者: Grayly吖 | 来源:发表于2019-05-09 23:55 被阅读245次

    一、Vuex持久化插件

          在F5刷新页面后,vuex会重新更新state,所以,存储的数据会丢失。为了克服这个问题, vuex-persistedstate出现了~~

    1、原理

          将vuex的state存在localStorage或sessionStorage或cookie中一份,刷新页面的一瞬间,vuex数据消失,vuex会去sessionStorage中得到数据,变相的实现了数据刷新不丢失~

    2、安装

          npm install vuex-persistedstate  --save
    

    3、配置

            import Vue from 'vue';
            import Vuex from 'vuex';
            //vuex持久化插件
            import createPersistedState from "vuex-persistedstate";
            Vue.use(Vuex);
    
            //创建Vuex实例并导出
            export default new Vuex.Store({
                省略号。。。
                plugins: [createPersistedState()]
            })
    

    4、配置完成后重启项目进行页面刷新,查看是否成功

    二、Vue组件设置背景色

    • vh:浏览器视区高度百分值

    • wh:浏览器视区宽度百分值

    • min-height:最小高度,其他时候自适应

    给组件根标签设置:min-height:100vh,就可以正常添加背景色

        <style scoped>
        .grayly {
          background: #f4f4f4;
          min-height: 100vh;
        }
        </style>
    

    每日额外(订单详情页面)

    Vue组件页面渲染正常,仍然报错address is not defined

    控制台
            order.cinemaInfo.address
    

    (1)解决前奏:order一个对象,当访问它没有的属性时会返回undefined,再访问undefined的address时就会直接报错

    (2)找到原因:
           数据请求是异步的,在页面进行挂载的时候,数据还没传过来,但是我们已经开始访问data中order这个对象了,页面挂载完成(vue生命周期mounted),页面会因为order暂时没有数据而显示undefined。
          当数据传过来后,data中的数据发生改变,触发更新的钩子(生命周期updated),然后就会渲染到页面上,所页面正常显示

    (3)解决:使用逻辑运算(逻辑与&&)

         {{order.cinemaInfo && order.cinemaInfo.address}}
    
    • 当数据还没传过来时,返回第一个undefined,不再往下执行,就不会发生不报错
    • 当数据传过来后,第一个为true,第二个为true,返回第二个得到数据正常渲染页面

    相关文章

      网友评论

        本文标题:Vuex持久化 &vue组件设置背景色

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