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 相关文章推荐
Jquery中dialog属性小记
Sep 03 Javascript
jQuery中使用了document和window哪些属性和方法小结
Sep 13 Javascript
javascript中typeof的使用示例
Dec 19 Javascript
JS版元素周期表实现方法
Aug 05 Javascript
javascript中eval和with用法实例总结
Nov 30 Javascript
JS给Array添加是否包含字符串的简单方法
Oct 29 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
Oct 30 Javascript
js学习之----深入理解闭包
Nov 21 Javascript
vue 根据数组中某一项的值进行排序的方法
Aug 30 Javascript
10行代码实现微信小程序滑动tab切换
Dec 28 Javascript
关于vue状态过渡transition不起作用的原因解决
Apr 09 Javascript
jQuery 选择器用法基础入门示例
Jan 04 jQuery
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 和 MySQL 基础教程(一)
2006/10/09 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
Python使用redis pool的一种单例实现方式
2016/04/16 Python
python连接mysql实例分享
2016/10/09 Python
Python3爬楼梯算法示例
2019/03/04 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
Pytorch之Variable的用法
2019/12/31 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
局域网定义和特性
2016/01/23 面试题
中学自我评价
2014/01/31 职场文书
办理房产证委托书
2014/09/18 职场文书
2014年公司工作总结
2014/11/22 职场文书
文员岗位职责
2015/02/04 职场文书
开学典礼致辞
2015/07/29 职场文书
高一军训感想
2015/08/07 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫