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 相关文章推荐
一个可以显示阴历的JS代码
Mar 05 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
Jul 31 Javascript
js change,propertychange,input事件小议
Dec 20 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
Jan 11 Javascript
jQuery中:focus选择器用法实例
Dec 30 Javascript
可以浮动某个物体的jquery控件用法实例
Jul 24 Javascript
jQuery学习心得总结(必看篇)
Jun 10 Javascript
js实现文字选中分享功能
Jan 25 Javascript
浅谈ElementUI中switch回调函数change的参数问题
Aug 24 Javascript
深入探讨JavaScript的最基本部分之执行上下文
Feb 12 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
Nov 05 Javascript
JavaScript中的Proxy对象
Nov 27 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
PHP 查找字符串常用函数介绍
2012/06/07 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
JavaScript 动态生成方法的例子
2009/07/22 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
caller和callee的区别介绍及演示结果
2013/03/10 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
[02:28]PWL开团时刻DAY3——Ink Ice与DeMonsTer之间的勾心斗角
2020/11/03 DOTA
JPype实现在python中调用JAVA的实例
2017/07/19 Python
Django中的forms组件实例详解
2018/11/08 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
TensorFlow中如何确定张量的形状实例
2020/06/23 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
局域网定义和特性
2016/01/23 面试题
贺卡寄语大全
2014/04/11 职场文书
无偿献血倡议书
2014/04/14 职场文书
农业项目建议书
2014/08/25 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
大学生见习报告总结
2014/11/04 职场文书
2014年残联工作总结
2014/11/21 职场文书
申报优秀教师材料
2014/12/16 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang