解决vue渲染时闪烁{{}}的问题

原文转自: 点我javascript

Vue页面加载时v-show设置的隐藏元素出现致使页面闪烁问题
在写APP社区页面的时候在一些地方用了v-show,在刷新页面的时候就发现即使在逻辑判断为false某些元素不应显示时也会露个脸,一闪而过,元素快小还好,若是是特别大的地方就看起来就很不爽,因而就上网搜了下看有没有解决方法,结果还真有。vue

方法一: v-cloak
官方的解释就一句话:这个指令保持在元素上直到关联实例结束编译。
光看这句话一头雾水,后面紧接着说了用法:java

和 CSS 规则如 [v-cloak] { display: none } 一块儿用时,这个指令能够隐藏未编译的 Mustache 标签直到实例准备完毕。性能

也就是说v-cloak指令能够像CSS选择器同样绑定一套CSS样式而后这套CSS会一直生效到实例编译结束。
示例代码:(亲测可用spa

<template>
  <keep-alive include="index">
    <router-view v-cloak></router-view>
  </keep-alive>
</template>

<style>
  /* 隐藏Vue代码,全部的组件设置成隐藏 */
  [v-cloak]:not(body) {
    display: none;
  }
</style>

  

方法二: v-text
vue中咱们会将数据包在两个大括号中,而后放到HTML里,可是在vue内部,全部的双括号会被编译成textNode的一个v-text指令。
而使用v-text的好处就是永远更好的性能,更重要的是能够避免FOUC (Flash of Uncompiled Content) ,也就是上面与遇到的问题。.net

示例代码:code

<span v-text="msg"></span>
<!-- same as -->
<span>{{msg}}</span>
相关文章
相关标签/搜索