我需要一段vue3组合式语法模糊查询的代码
时间: 2023-05-23 10:07:05 浏览: 207
Vue文本模糊匹配功能如何实现
当你说“模糊查询”时,我猜你的意思是根据用户输入动态过滤数据。下面是一个基本的 Vue 3 组合式语法模糊查询代码示例:
```html
<template>
<div>
<input v-model="search" type="text" placeholder="search...">
<ul>
<li v-for="item in filteredItems" :key="item.id">{{ item.name }}</li>
</ul>
</div>
</template>
<script>
import { ref, computed } from 'vue'
export default {
setup() {
const items = ref([
{ id: 1, name: 'apple' },
{ id: 2, name: 'banana' },
{ id: 3, name: 'cherry' },
{ id: 4, name: 'durian' },
])
const search = ref('')
const filteredItems = computed(() => {
if(!search.value) {
return items.value
}
return items.value.filter(item => {
return item.name.toLowerCase().indexOf(search.value.toLowerCase()) !== -1
})
})
return {
search,
filteredItems
}
}
}
</script>
```
在此示例中,我们从 `vue` 导入了一个 `ref` 和 `computed`。 `ref` 和 `computed` 是 Vue 3 组合式 API 中的两个重要机制。使用 `ref` 创建了一个响应式对象,`computed` 创建了一个计算属性。
我们创建了一个名为 `items` 的响应式对象来存储我们的项目列表,以及一个名为 `search` 的响应式对象来存储用户输入的搜索字符串。我们还创建了一个计算属性 `filteredItems`,用于过滤我们的项目列表,并基于用户的搜索字符串返回匹配的项目。最后,我们将 `search` 和 `filteredItems` 作为 `return` 对象的一部分导出。
在模板中,我们使用 `v-model` 指令将用户输入绑定到 `search` 观察对象。我们还使用 `v-for` 将 **过滤的项目列表** 渲染到模板中。
希望这会有所帮助!
阅读全文