vue中节流函数实现搜索数据

Posted smart-girl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue中节流函数实现搜索数据相关的知识,希望对你有一定的参考价值。

在日常开发中有很多场景我们都需要用到节流函数和防抖函数,比如:实现输入框的模糊查询因为需要轮询ajax,影响浏览器性能,所以需要用到节流函数;实现手机号、姓名之类的的验证,往往我们只需要验证一次,这个时候我们就需要用到防抖函数;但是网上的很多资料都是不够具体和便于理解。
基本代码如下

 <el-input placeholder="请输入搜索内容" suffix-icon="el-icon-search" class="searchItem searchInput" v-        
    model.trim="keyword">
</el-input>
     <div class="taskList">
        <el-table ref="multipleTable" :data="userListData.rows" id="taskList" tooltip-effect="dark" v-loading="loading" element-loading-text="数据加载中" element-loading-background="rgba(0, 0, 0, 0.6)" style="width: 100%" border fit stripe>
          <el-table-column type="index" :index="indexMethod" label="序号" width="60">
          </el-table-column>
          <el-table-column prop="name" label="名称" show-overflow-tooltip>
          </el-table-column>
          <el-table-column prop="address" label="地址" show-overflow-tooltip>
          </el-table-column>
          <el-table-column prop="phone" label="电话" show-overflow-tooltip>
          </el-table-column>
          <el-table-column prop="principal" label="负责人" show-overflow-tooltip>
          </el-table-column>
          <el-table-column label="操作" width="200">
            <template slot-scope="scope">
              <el-button type="success" size="small" plain @click="goDetail(scope.row.id)" v-if="menus.USER_CUST_VIEW">查看</el-button>
              <!-- <el-button type="primary" size="small" plain @click="goUrl(`/zz/editUser/u/${scope.row.userId}`)">编辑</el-button> -->
              <el-button type="danger" size="small" plain @click="removeUser(scope.row.id)" >删除</el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <div class="pagination-container">
        <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="userListData.pageNumber" :page-sizes="[10,20,30, 50]" :page-size="userListData.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="userListData.total">
        </el-pagination>
      </div>

基本代码如下

import _ from ‘lodash‘
export default{
    computed:{
searchContent() {
      return this.keyword
    },
  watch: {
    // 如果 `question` 发生改变,这个函数就会运行
    searchContent: function(newQuestion, oldQuestion) {
      this.userListData.pageNumber = 1
      this.getAccountUserListDebounce()
    }
  },
    getAccountUserListDebounce: _.debounce(
      function() {
        this.getList()
      },
      // 这是我们为判定用户停止输入等待的毫秒数
      500
    ),
    getList() {
      this.loading = true
      mytomer(this.keyword, this.userListData.pageSize, this.userListData.pageNumber, null).then(res => {
        this.loading = false
        this.userListData.total = res.data.total
        this.userListData.rows = res.data.rows
      }).catch(error => {
        this.loading = false
      })
    },

}

}

以上是关于vue中节流函数实现搜索数据的主要内容,如果未能解决你的问题,请参考以下文章

vue 简单实现函数防抖(debounce)和节流(throttle)

【js】简单理解节流与防抖,搜索框的场景

vue实现输入框的模糊查询(节流函数的应用场景)

VUE中的函数的防抖和节流 以及应用场景

antd vue tree树形结构问题记录

面试官说手写 :防抖和节流