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 相关文章推荐
dwz 如何去掉ajaxloading具体代码
May 22 Javascript
JQuery的ready函数与JS的onload的区别详解
Nov 21 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
Dec 27 Javascript
Js+php实现异步拖拽上传文件
Jun 23 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
Jun 24 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
Oct 28 Javascript
使用express+multer实现node中的图片上传功能
Feb 02 Javascript
vue 国际化 vue-i18n 双语言 语言包
Jun 07 Javascript
详解javascript 变量提升(Hoisting)
Mar 12 Javascript
使用element-ui table expand展开行实现手风琴效果
Mar 15 Javascript
vue+php实现的微博留言功能示例
Mar 16 Javascript
JavaScript组合设计模式--改进引入案例分析
May 23 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
一个多文件上传的例子(原创)
2006/10/09 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
javascript运动详解
2015/07/06 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
JS实现扫码枪扫描二维码功能
2020/01/03 Javascript
[44:51]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第二场
2018/04/05 DOTA
总结python实现父类调用两种方法的不同
2017/01/15 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
css3实现超立体3D图片侧翻倾斜效果
2014/04/16 HTML / CSS
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
支教自我鉴定
2014/01/18 职场文书
大学校庆策划书
2014/01/31 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
考试保密承诺书
2014/08/30 职场文书
银行员工犯错检讨书
2014/09/16 职场文书
党校培训学习心得体会
2016/01/06 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书
利用Python实现Picgo图床工具
2021/11/23 Python