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的视频播放插件
Oct 09 Javascript
js实现同一页面多个运动效果的方法
Apr 10 Javascript
Bootstrap Table的使用总结
Oct 08 Javascript
JavaScript表单验证实现代码
May 22 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
May 25 Javascript
微信小程序 跳转传递数据的实例
Jul 06 Javascript
Node.js成为Web应用开发最佳选择的原因
Feb 05 Javascript
JS基于开关思想实现的数组去重功能【案例】
Feb 18 Javascript
使用vue实现通过变量动态拼接url
Jul 22 Javascript
js实现金山打字通小游戏
Jul 24 Javascript
js实现三角形粒子运动
Sep 22 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
Feb 15 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 empty()与isset()区别的详细介绍
2013/06/17 PHP
php解析json数据实例
2014/08/19 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
js不是基础的基础
2006/12/24 Javascript
JS option location 页面跳转实现代码
2008/12/27 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
vue-cli中的webpack配置详解
2017/09/25 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
2018/04/18 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
python中遍历文件的3个方法
2014/09/02 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
解决python "No module named pip" 的问题
2018/10/13 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
weblogic面试题
2016/03/07 面试题
C有"按引用传递"吗
2016/09/06 面试题
企业厂务公开实施方案
2014/03/26 职场文书
孕妇病假条怎么写
2015/08/17 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
python编程实现清理微信重复缓存文件
2021/11/01 Python