求助:关于 element-ui 中的 v-loading

2019-10-11 15:20:11 +08:00
 sevenzhou1218

一个很简单的功能,搜索列表内容时,发送请求获取数据,加了一个 loading 效果,展示数据的时候增加了一个 filter,但是发现,只要加了 loading,filter 就执行了两次。

我的理解为,loading 效果改变了虚拟的 dom 树,导致内容重绘,从而 filter 又执行了一次? 这样会不会增加额外消耗?

<template>
  <div>
    <div class="search-div">
	    <el-button type="primary" @click="doSearch" :loading="searchLoading">查询</el-button>
    </div>
    <div style="height: 100px;" class="content" v-loading="searchLoading" element-loading-background="rgba(255, 255, 255, 0.7)">
      {{test | formatVal}}
    </div>
    
  </div>
</template>
<script>
export default {
  filters:{
    formatVal(val){
      console.info(`test = ${val}`, new Date().getTime());
      return val;
    },
  },
  data(){
    return {
      searchLoading: false, 
      test: 1
    };
  },
  methods: {
    //搜索
    doSearch(){
      let self = this;
      self.searchLoading = true;
      setTimeout(()=>{
	      self.test = Math.random();
	      self.searchLoading = false;
      }, 1000);
    },
  },
  // watch:{
  //   test: function(v){
	//     console.info('test changed', v);
  //   }
  // }
}
</script>
6181 次点击
所在节点    Vue.js
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/608251

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX