vue3 实现多条件搜索

目录

 

前言

用法

1. 数据绑定和事件处理

 2. 列表渲染和条件过滤

 解析

完整代码


前言

在现代的前端开发中,Vue.js 是一个非常流行的 JavaScript 框架,用于构建用户界面。Vue 提供了一种简洁的方式来构建交互式和动态的网页应用。在这个例子中,我们将探讨如何使用 Vue 3 和 Composition API 来创建一个简单的搜索功能,允许用户根据不同的条件过滤和显示数据。

用法

在这个例子中,我们有一个包含多个订单信息的数组 `data`。每个订单都有一个 ID、昵称、手机号、标题等属性。我们提供了四个输入框,允许用户输入 ID、昵称、手机号和标题的搜索条件。根据用户的输入,订单列表将实时更新以显示匹配的结果。

1. 数据绑定和事件处理

使用 `v-model` 指令,我们可以创建双向数据绑定,将输入框的值绑定到 Vue 实例的数据属性上。当输入框的值发生变化时,绑定的数据属性也会相应地更新。




在这里,`searchId`、`searchNickname`、`searchTel` 和 `searchTitle` 都是响应式的数据属性,它们的初始值都设置为空字符串。

 2. 列表渲染和条件过滤

使用 `v-for` 指令,我们可以遍历 `data` 数组,并为数组中的每个元素渲染一个列表项。

  • ID: {{ item.id }}, 名称: {{ item.nickname }}, 手机号: {{ item.tel }}, Title: {{ item.title }}

在这里,`filteredData` 是一个计算属性,它基于 `data` 和搜索条件来返回过滤后的订单列表。使用 `Array.prototype.filter` 方法,我们可以根据用户输入的搜索条件来过滤订单列表。

const filteredData = computed(() => {
  return data.value.filter(item => {
    return (
      (!searchId.value || item.id.toString().includes(searchId.value)) &&
      (!searchNickname.value || item.nickname.toLowerCase().includes(searchNickname.value.toLowerCase())) &&
      (!searchTel.value || item.tel.includes(searchTel.value)) &&
      (!searchTitle.value || item.title.toLowerCase().includes(searchTitle.value.toLowerCase()))
    );
  });
});

在这个计算属性中,我们检查每个订单的 ID、昵称、手机号和标题是否包含用户输入的搜索条件。如果用户没有输入搜索条件,或者订单的相应属性包含搜索条件,则该订单会被包含在过滤后的结果中。

 解析

这个例子展示了 Vue 3 和 Composition API 的强大功能,提供了一种简洁和声明式的方式来构建动态和响应式的用户界面。

1. **响应式数据**: 使用 `ref` 函数,我们可以创建响应式的数据属性。当这些属性的值发生变化时,Vue 会自动更新 DOM,确保用户界面与数据保持同步。

2. **计算属性**: 使用 `computed` 函数,我们可以创建依赖于响应式数据的计算属性。计算属性的值会根据其依赖的数据自动更新,并且它们是惰性求值的,只有在需要时才会重新计算。

3. **双向数据绑定**: 使用 `v-model` 指令,我们可以实现输入框和 Vue 实例数据之间的双向数据绑定。这使得实现表单和用户输入的处理变得非常简单和直观。

4. **条件渲染和列表渲染**: 使用 `v-if`、`v-else-if`、`v-else` 和 `v-for` 指令,我们可以根据数据的状态在 DOM 中渲染不同的内容或列表。

5. **事件处理**: Vue 也提供了一种简洁的方式来处理用户输入和其他 DOM 事件。

通过这个例子,我们可以看到 Vue 3 和 Composition API 提供了一种非常高效和灵活的方式来构建复杂的用户界面,使得开发者能够以声明式的方式描述用户界面应该如何根据数据的变化来更新,而不是手动操作 DOM。这不仅使得代码更加简洁和易于理解,也提高了开发效率和应用性能。

完整代码


 

你可能感兴趣的:(vue,js,vue.js,前端,javascript)