vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)


Posted in Javascript onApril 20, 2018

在使用vue绑定数据的时候,渲染页面时会出现变量闪烁,例如

<div class="#app">
  <p>{{value.name}}</p>
</div>

在加载的时候会看到

{{value.name}}

在页面出现,过了几秒之后才会渲染数据,在vue中有个指令可以解决这个问题,v-cloak

那么,v-cloak要放在什么位置呢,是不是每个需要渲染数据的标签都要添加这个指令,经过试验发现,v-cloak并不需要添加到每个标签,只要在el挂载的标签上添加就可以,

<div class="#app" v-cloak>
  <p>{{value.name}}</p>
</div>

而且,在css里面要添加

[v-cloak] {
  display: none;
}

这样就可以防止页面闪烁了。

但是有的时候会不起作用,可能的原因有二:

1、v-cloak的display属性被层级更高的给覆盖掉了,所以要提高层级

[v-cloak] {
  display: none !important;
}

2、样式放在了@import引入的css文件中

v-cloak的这个样式放在@import 引入的css文件中不起作用,可以放在link引入的css文件里或者内联样式中

补充:

下面看下Vue 中的 v-cloak 解读

v-cloak 的作用和用法

用法:

这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。官方API

<div id="app">
  {{msg}}
</div>

HTML 绑定 Vue实例,在页面加载时会闪烁

然后才会出现 加载完成 字样,为了效果更明显,我们可以延后加载 Vue 实例

setTimeout(() => {
  new Vue({
    el: '#app',
    data: {
      msg: 'hello'
    }
  })
},2000)

v-cloak 可以解决这一问题,在 css 中加上

[v-cloak] {
 display: none;
}

在 html 中的加载点加上 v-cloak,就可以解决这一问题

<div id="app" v-cloak>
  {{msg}}
</div>

 Vue1.x 与 Vue2 中 v-cloak 的不同

Vue1 中,允许将 Vue 实例挂载在 body 上,而 Vue2 是不允许的,想对整个页面实例化,需要另外用一个 div 来容纳整个页面内容,对其进行实例化

这样在使用 v-cloak 时,同样需要用到这种方法

 为什么我用的 v-cloak 无效?

在实际项目中,我们常通过 @import 来加载 css 文件

@import "style.css"
@import "index.css"

而 @import 是在页面 DOM 完全载入后才会进行加载,如果我们将 [v-cloak] 写在 @import 加载的 css 文件中,就会导致页面仍旧闪烁。

为了避免这种情况,我们可以将 [v-cloak] 写在 link 引入的 css 中,或者写一个内联 css 样式,这样就得到了解决。

总结

以上所述是小编给大家介绍的vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量) ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
Feb 03 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
Jul 25 Javascript
js中实现多态采用和继承类似的方法
Aug 22 Javascript
jquery结合CSS使用validate实现漂亮的验证
Jan 29 Javascript
JS折半插入排序算法实例
Dec 02 Javascript
基于jQuery实现返回顶部实例代码
Jan 01 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
Aug 30 Javascript
Vue中使用vee-validate表单验证的方法
May 09 Javascript
axios使用拦截器统一处理所有的http请求的方法
Nov 02 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
Jan 14 Javascript
JS实现简易留言板增删功能
Feb 08 Javascript
javascript实现智能手环时间显示
Sep 18 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
Apr 20 #jQuery
vue多页面开发和打包正确处理方法
Apr 20 #Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
Apr 20 #Javascript
Vue写一个简单的倒计时按钮功能
Apr 20 #Javascript
使用Vue如何写一个双向数据绑定(面试常见)
Apr 20 #Javascript
Vue中如何实现proxy代理
Apr 20 #Javascript
React diff算法的实现示例
Apr 20 #Javascript
You might like
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
如何用javascript判断录入的日期是否合法
2007/01/08 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
js 数值项目的格式化函数代码
2010/05/14 Javascript
事件绑定之小测试  onclick &amp;&amp; addEventListener
2011/07/31 Javascript
Knockoutjs快速入门(经典)
2012/12/24 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
Express.JS使用详解
2014/07/17 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
2017/02/15 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
python脚本爬取字体文件的实现方法
2017/04/29 Python
Django 中使用流响应处理视频的方法
2018/07/20 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
html5 标签
2009/07/16 HTML / CSS
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
护理目标管理责任书
2014/07/25 职场文书
2015年治庸问责工作总结
2015/07/27 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书