解决vue2.x中数据渲染以及vuex缓存的问题


Posted in Javascript onJuly 13, 2017

最近在学习Vue.js,把自己遇到的问题做个记录,所以,今天添加一点小笔记。

在项目中遇到两个问题,简单的做个笔记来记录自己解决的问题,可能不是很好的处理办法,欢迎提出,自己还在不断优化中...

第一个是vue在加载页面的时候,会先加载静态资源,这个时候数据还没有请求回来,用户会先看到静态的内容(就是页面固定写死的),过一会才会有数据回来渲染,这体验是很差的,其实解决办法也很简单,就是用vue里的 v-if 来判断请求的数据是否返回... 

<div class="container" id="app" v-cloak>
   <div v-if='moneyInMsg.uuid'>
     <in-account-msg :money-in-msg="moneyInMsg"></in-account-msg>
   </div>
 </div>

这里的  v-if = 'moneyInMsg.uuid' 就是来判断数据有没有请求回来,如果请求回来就让他显示,没有请求到数据,就让他loading,这样体验就会好很多。在这里还需要注意的是,v-if判断的数据源,是数据返回的字段,如果两个字段只能存在其一的话,可以v-if ='a || b' 来判断数据是否成功的返回;还要注意的一点是,不能直接在组件里用v-if判断,也不能直接在根标签里判断,直接嵌套一个div就可以解决,并不影响样式,只做数据是否正常返回的显示作用;

第二个就是在使用vuex时,有数据缓存;我遇到的情况是,在列表页点击进入详情页,返回到列表页,在进入另一个详情页的时候,数据会显示之前的数据,同时页面还在loading(接口返回的数据比较慢),过一会数据返回的时候,才重新渲染页面。可能是自己对vuex理解的不够深入,没有在vuex基础上解决这个问题。虽然曲折的解决了这个问题,但是不够zhuang,但是解决了问题,后期再做优化。

在之前解决的方案中,是进入页面的时候,重新刷新页面,重新请求数据,代码如下:

export const refresh = (title) => {
 document.title = title;
 let iframe = document.createElement('iframe');
 iframe.src = require('./mm.jpg');
 iframe.setAttribute('style', 'display:none;');
 let loadFn = function () {
     iframe.removeEventListener('load', loadFn);
     document.body.removeChild(iframe);
     console.info('Page Title IS ' + title);
     iframe = null;
     loadFn = null;
 }
 document.body.appendChild(iframe)
 iframe.addEventListener('load', loadFn);
}

但是没有达到预期的效果,依然会出现上面的情况... 丫的,抓狂了...(被别人催的感觉真的不爽...)

百度啊,google啊,都没有遇到这种情况的?找到一个,还是提问的,没有回答的,好吧,还是靠自己。自己动手,丰衣足食啊...

思路是,定义一个参数status为false,当数据没有请求回来,就不显示,也是用上面的方式来判断,一直loading(请求失败,去掉loading),当数据返回的时候,让status为true;使用$nextTick来更新数据...

贴上自己部分的代码作为参考:

<template>
  <div v-if='status && order.name'>
    //页面展示的数据
  </div>
</template> 
<script>
  export default{
  data(){
    return {
       status:false
      }
    },
    created(){
     var _this = this;
      this.setDd({res =>{
        _this.$nextTick(function(){
          _this.status= true
        });  
      }})
    },
    computed:{
      ...mapGetters({//getter获取的数据})
    },
    methods:{
      ...mapActions(['setDd']) //获取数据的方法
    }
  }   
</script>

处理的方式比较丑陋...,但是实现了想要的效果;这里注意一点就是v-if的判断问题。(v-if='status && order.name')这个用了并且,目的是有数据返回,才能让他显示,如果没有数据,会显示静态的值,数据都为underfind...

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 中String.match()与RegExp.exec()的区别说明
Jan 10 Javascript
深入理解JavaScript 闭包究竟是什么
Apr 12 Javascript
js实现仿百度瀑布流的方法
Feb 05 Javascript
基于jQuery实现自动轮播旋转木马特效
Nov 02 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
May 28 Javascript
原生js实现简单的模态框示例
Sep 08 Javascript
在vue中使用公共过滤器filter的方法
Jun 26 Javascript
jQuery中DOM操作原则实例分析
Aug 01 jQuery
layui操作列按钮个数和文字颜色的判断实例
Sep 11 Javascript
小程序如何写动态标签的实现方法
Feb 05 Javascript
在vue项目中 实现定义全局变量 全局函数操作
Oct 26 Javascript
Vue 实现可视化拖拽页面编辑器
Feb 01 Vue.js
JavaScript反弹动画效果的实现代码
Jul 13 #Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
Jul 13 #Javascript
详解vue-cli + webpack 多页面实例配置优化方法
Jul 13 #Javascript
Angular限制input框输入金额(是小数的话只保留两位小数点)
Jul 13 #Javascript
js实现图片上传预览原理分析
Jul 13 #Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
Jul 13 #Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
Jul 13 #Javascript
You might like
PHP导入Excel到MySQL的方法
2011/04/23 PHP
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
javascript innerText和innerHtml应用
2010/01/28 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
Python创建或生成列表的操作方法
2019/06/19 Python
Django ImageFiled上传照片并显示的方法
2019/07/28 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
十岁生日家长答谢词
2014/01/17 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
中年人生感言
2014/02/04 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
大学生读书笔记大全
2015/07/01 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
2019年思想汇报
2019/06/20 职场文书
Python编写车票订购系统 Python实现快递收费系统
2022/08/14 Python