谈谈 Vue.js 中的 v-cloak 指令

场景:

1.当网络较慢,网页还在加载 Vue.js ,而导致 Vue 来不及渲染,这时页面就会显示出 Vue 源代码。

2.当向后台接口请求数据,数据还没有请求过来的时候,出现 “白屏” ,可以使用 v-cloak 进行优化,加上加载 动画/GIF

我们可以使用 v-cloak 指令来解决这一问题。

【这里主要来说一下 2,如果你想要了解关于 1 的更多 可以点击 这里

1.使用带有 v-cloak 指令的盒子
<div id="box" v-cloak>
  ......
</div>
2.内部准备好两个结构

两个结构分别是 “白屏” 时加载的样式、图片等 请求到数据后展示的数据内容

      <div class="loading" v-if="loading">
        <img src="./loading (1).gif" alt="" />
      </div>
      <ul v-else>
        <li v-for="item in result">
          <div class="left">
            <img
              class="imgs"
              :src="item.author.avatar_url"
              :title="item.author.loginname"
            />
            <span>{{item.reply_count}}/{{item.visit_count}}</span>
            <h5>{{item.title}}</h5>
          </div>
          <div class="right">{{item.last_reply_at|formatTime}}</div>
        </li>
      </ul>
3.设置 v-cloak 样式
      [v-cloak] {
        display: none;
      }
4.在数据data中定义一个开关
        data: {
          result: [],
          loading: false,
        },
5.在请求之前 loading 开启
        beforeMount() {
          //开启开关
          this.loading = true;
          this.axios_get();
        },
6.在请求数据结束后 loading 关闭
          axios_get() {
            let url = "https://XXXXXXXXXXXXXX";
            axios
              .get(url)
              .then((res) => {
                if (res.data.status === 200) {

                  this.result = res.data.data;

                  //关闭开关
                  this.loading = false;
                }
              })
              .catch((err) => console.log(err));
          },
7.最后来看一下效果吧

【为了方便看到效果 开启 slow3G 模式】

8.扩展

相信,有机智的小伙伴,发现了 这种做法 就和 “节流阀” 的用法是几乎一模一样的。不同的点就是 在触发请求的地方还需要进行判断 判断是否 节流阀 是否开启,如果开启 就不让其发起请求,反之可以进行请求......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值