Vue实现模糊查询

简介: Vue实现模糊查询

在Vue中实现模糊查询,你可以使用JavaScript的filterincludes方法,结合Vue的v-for指令。下面是一个简单的例子:

首先,你需要在你的Vue实例中定义一个数据数组和一个查询字符串。

data() {
return {
items: ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry'],
query: ''
}
}

然后,你可以在你的模板中使用v-for来遍历这个数组,并使用v-model来绑定查询字符串。

<input v-model="query" type="text" placeholder="Search...">
<ul>
<li v-for="item in filteredItems" :key="item">
{{ item }}
</li>
</ul>

在上面的代码中,filteredItems是一个计算属性,它会返回过滤后的数组。你可以使用JavaScript的filterincludes方法来实现模糊查询。

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

在上面的代码中,filter方法会遍历数组中的每个元素,并返回一个新的数组,该数组只包含满足条件的元素。includes方法会检查一个字符串是否包含另一个字符串。在这个例子中,我们使用toLowerCase方法将字符串转换为小写,以便进行不区分大小写的查询。

当使用Vue3实现模糊查询时,你可以利用Vue的响应式特性和计算属性来实现。下面是一个简单的说明和代码示例:

说明:

  1. 创建一个Vue3组件,并引入必要的依赖。
  2. 在组件的setup()函数中,定义数据和计算属性。
  3. 使用v-model指令将输入框的值绑定到数据属性上。
  4. 定义一个计算属性filteredItems,根据输入框的值过滤数据数组。
  5. 在模板中使用v-for指令遍历过滤后的数据数组,并显示每个元素。

代码示例:

<template>
<div>
<input v-model="searchQuery" type="text" placeholder="Search...">
<ul>
<li v-for="item in filteredItems" :key="item.id">
{{ item.name }}
</li>
</ul>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const items = ref([
{ id: 1, name: 'Apple' },
{ id: 2, name: 'Banana' },
{ id: 3, name: 'Cherry' },
{ id: 4, name: 'Date' },
{ id: 5, name: 'Elderberry' }
]);
const searchQuery = ref('');
const filteredItems = computed(() => {
if (!searchQuery.value) return items.value;
return items.value.filter(item => item.name.toLowerCase().includes(searchQuery.value.toLowerCase()));
});
return { items, searchQuery, filteredItems };
}
};
</script>

在上面的代码中,我们首先导入了Vue3的ref函数,用于创建响应式引用。然后,在组件的setup()函数中,我们定义了两个响应式引用itemssearchQuery,分别表示数据数组和查询字符串。接下来,我们定义了一个计算属性filteredItems,根据输入框的值过滤数据数组。最后,在模板中,我们使用v-model指令将输入框的值绑定到searchQuery上,并使用v-for指令遍历filteredItems数组,显示每个项目的名称。当输入框的值发生变化时,计算属性会自动更新,并触发重新渲染。

相关文章
|
3天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
3天前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
3天前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
3天前
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。
|
2天前
|
JavaScript 前端开发 UED
vue学习第二章
欢迎来到我的博客!我是一名自学了2年半前端的大一学生,熟悉JavaScript与Vue,目前正在向全栈方向发展。如果你从我的博客中有所收获,欢迎关注我,我将持续更新更多优质文章。你的支持是我最大的动力!🎉🎉🎉
|
4天前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
2天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,熟悉JavaScript与Vue,正向全栈方向发展。博客内容涵盖Vue基础、列表展示及计数器案例等,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
|
4天前
|
存储 JavaScript
Vue 组件间如何通信
Vue组件间通信是指在Vue应用中,不同组件之间传递数据和事件的方法。常用的方式有:props、自定义事件、$emit、$attrs、$refs、provide/inject、Vuex等。掌握这些方法可以实现父子组件、兄弟组件及跨级组件间的高效通信。
|
9天前
|
JavaScript
Vue基础知识总结 4:vue组件化开发
Vue基础知识总结 4:vue组件化开发
|
9天前
|
存储 JavaScript
Vue 状态管理工具vuex
Vue 状态管理工具vuex