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控制阿拉伯数字转为中文大写示例代码
Sep 04 Javascript
javascript搜索框点击文字消失失焦时文本出现
Sep 18 Javascript
原生JS和JQuery动态添加、删除表格行的方法
May 28 Javascript
初识Javascript小结
Jul 16 Javascript
jquery实现ajax加载超时提示的方法
Jul 23 Javascript
实例解析jQuery中如何取消后续执行内容
Dec 01 Javascript
angularjs实现首页轮播图效果
Apr 14 Javascript
JS实现动态添加DOM节点和事件的方法示例
Apr 28 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
Jul 12 jQuery
Vue.js分页组件实现:diVuePagination的使用详解
Jan 10 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
Aug 24 Javascript
react PropTypes校验传递的值操作示例
Apr 28 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
Zend Framework教程之配置文件application.ini解析
2016/03/10 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
php格式化时间戳
2016/12/17 PHP
PDO::commit讲解
2019/01/27 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
JavaScript 中的事件教程
2007/04/05 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
React Router v4 入坑指南(小结)
2018/04/08 Javascript
vue.js使用3DES加密的方法示例
2018/05/18 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
jquery实现的放大镜效果示例
2020/02/24 jQuery
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
python字典多键值及重复键值的使用方法(详解)
2016/10/31 Python
python数据挖掘需要学的内容
2019/06/23 Python
django如何自己创建一个中间件
2019/07/24 Python
Python局部变量与全局变量区别原理解析
2020/07/14 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
Java中的基本数据类型所占存储空间大小固定的吗
2012/02/15 面试题
《花木兰》教学反思
2014/04/09 职场文书
驳回起诉裁定书
2015/05/19 职场文书
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
sql字段解析器的实现示例
2021/06/23 SQL Server