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 相关文章推荐
能说明你的Javascript技术很烂的五个原因分析
Oct 28 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
Apr 17 Javascript
防止登录页面出现在frame中js代码
Jul 22 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
Oct 30 Javascript
基于jquery实现省市联动效果
Nov 23 Javascript
网页瀑布流布局jQuery实现代码
Oct 21 Javascript
jquery代码规范让代码越来越好看
Feb 03 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
Jul 27 Javascript
解决linux下node.js全局模块找不到的问题
May 15 Javascript
Echarts地图添加引导线效果(labelLine)
Sep 30 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
Dec 25 Javascript
微信小程序实现多图上传
Jun 19 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函数
2006/10/09 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
javascript 写的一个简单的timer
2009/07/30 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
bootstrap multiselect 多选功能实现方法
2017/06/05 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
Python显示进度条的方法
2014/09/20 Python
Python常用的爬虫技巧总结
2016/03/28 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
俄罗斯购买自行车网站:Vamvelosiped
2021/01/29 全球购物
办理暂住证介绍信
2014/01/11 职场文书
建筑节能汇报材料
2014/08/22 职场文书
二手车转让协议书
2015/01/29 职场文书
起诉意见书范文
2015/05/19 职场文书
烈士陵园观后感
2015/06/08 职场文书
导游词之天津古文化街
2019/11/09 职场文书