当前位置:首页 > VUE

vue简单查询功能实现

2026-01-23 16:53:43VUE

实现 Vue 简单查询功能

1. 创建 Vue 实例与数据绑定

在 Vue 实例的 data 中定义查询关键词 searchQuery 和数据列表 items。通过 v-model 实现输入框与数据的双向绑定。

<div id="app">
  <input v-model="searchQuery" placeholder="输入关键词查询">
  <ul>
    <li v-for="item in filteredItems" :key="item.id">
      {{ item.name }}
    </li>
  </ul>
</div>
new Vue({
  el: '#app',
  data: {
    searchQuery: '',
    items: [
      { id: 1, name: 'Apple' },
      { id: 2, name: 'Banana' },
      { id: 3, name: 'Orange' }
    ]
  }
})

2. 使用计算属性实现过滤

通过 computed 计算属性实时过滤数据,避免直接修改原始数据。使用 filterincludes 方法实现不区分大小写的匹配。

computed: {
  filteredItems() {
    return this.items.filter(item => 
      item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
    )
  }
}

3. 优化查询性能(可选)

对于大数据量场景,可通过以下方式优化:

  • 使用 debounce 延迟触发查询
  • 对数据预先建立索引
  • 分页加载结果
// 使用 lodash 的 debounce
methods: {
  debouncedSearch: _.debounce(function() {
    this.filteredItems = this.items.filter(item =>
      item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
    )
  }, 300)
}

4. 添加空状态提示

当查询结果为空时显示友好提示,提升用户体验。

<div v-if="filteredItems.length === 0">
  没有找到匹配的结果
</div>

5. 样式美化(可选)

添加基础 CSS 样式使界面更美观:

input {
  padding: 8px;
  width: 200px;
  margin-bottom: 10px;
}
ul {
  list-style: none;
  padding: 0;
}
li {
  padding: 5px;
  border-bottom: 1px solid #eee;
}

以上实现方案具有以下特点:

  • 响应式更新查询结果
  • 不区分大小写匹配
  • 代码简洁易于维护
  • 可扩展性强

vue简单查询功能实现

分享给朋友:

相关文章

vue简单功能实现

vue简单功能实现

Vue 简单功能实现示例 以下是一个基于 Vue 3 的简单计数器功能实现,包含模板、脚本和样式部分: <template> <div class="counter">…

vue实现简单登录

vue实现简单登录

使用 Vue 实现简单登录功能 创建 Vue 项目 确保已安装 Vue CLI,通过以下命令创建新项目: vue create vue-login-demo 选择默认配置或手动配置(如 Babel…

vue简单实现删除

vue简单实现删除

Vue 删除功能实现 使用 v-for 和 splice 方法删除数组元素 <template> <div> <ul> <li v-…

vue实现简单分页

vue实现简单分页

实现基础分页功能 在Vue中实现简单分页需要几个核心步骤:数据分片、页码计算、翻页逻辑。以下是一个基于Vue 3的示例实现方案: <template> <div>…

vue实现记账查询功能

vue实现记账查询功能

实现记账查询功能的步骤 创建Vue项目并安装依赖 使用Vue CLI创建项目,安装必要的依赖如axios、vue-router等。确保项目结构清晰,便于后续开发。 vue create accou…

vue实现简单弹幕效果

vue实现简单弹幕效果

实现基础弹幕效果 在Vue中实现弹幕效果需要结合CSS动画和动态数据渲染。以下是一个基础实现方案: 模板部分 <template> <div class="danmu-con…