当前位置:首页 > VUE

vue实现静态查询

2026-02-25 16:21:05VUE

Vue 实现静态查询的方法

在 Vue 中实现静态查询通常指在不依赖后端接口的情况下,直接对本地数据进行筛选或过滤。以下是几种常见的方法:

使用计算属性过滤数据

计算属性适合基于响应式数据动态过滤结果,无需手动触发。

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索..." />
    <ul>
      <li v-for="item in filteredItems" :key="item.id">{{ item.name }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      items: [
        { id: 1, name: '苹果' },
        { id: 2, name: '香蕉' },
        { id: 3, name: '橙子' }
      ]
    };
  },
  computed: {
    filteredItems() {
      return this.items.filter(item =>
        item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      );
    }
  }
};
</script>

使用方法触发查询

如果需要手动触发查询(如点击按钮),可以使用方法而非计算属性。

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索..." />
    <button @click="search">查询</button>
    <ul>
      <li v-for="item in result" :key="item.id">{{ item.name }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      items: [
        { id: 1, name: '苹果' },
        { id: 2, name: '香蕉' },
        { id: 3, name: '橙子' }
      ],
      result: []
    };
  },
  methods: {
    search() {
      this.result = this.items.filter(item =>
        item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      );
    }
  }
};
</script>

使用 Vue 3 的 refcomputed

在 Vue 3 中,可以通过 refcomputed 实现类似功能。

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索..." />
    <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 searchQuery = ref('');
    const items = ref([
      { id: 1, name: '苹果' },
      { id: 2, name: '香蕉' },
      { id: 3, name: '橙子' }
    ]);

    const filteredItems = computed(() =>
      items.value.filter(item =>
        item.name.toLowerCase().includes(searchQuery.value.toLowerCase())
      )
    );

    return { searchQuery, filteredItems };
  }
};
</script>

结合 Lodash 进行复杂查询

若需更复杂的查询逻辑(如模糊搜索、多条件筛选),可以引入 Lodash 库。

vue实现静态查询

import _ from 'lodash';

// 在计算属性或方法中使用
filteredItems() {
  return _.filter(this.items, item => 
    _.includes(item.name.toLowerCase(), this.searchQuery.toLowerCase())
  );
}

静态查询的注意事项

  • 性能优化:对于大型数据集,避免频繁触发过滤操作,可使用防抖(debounce)或节流(throttle)。
  • 大小写处理:统一转为小写或大写后再比较,避免大小写敏感问题。
  • 多字段查询:扩展过滤逻辑以支持多个字段的联合查询。

通过上述方法,可以灵活实现 Vue 中的静态查询功能。

标签: 静态vue
分享给朋友:

相关文章

vue实现添加用户

vue实现添加用户

Vue 实现添加用户功能 数据绑定与表单设计 在 Vue 中实现添加用户功能,首先需要设计一个表单,用于收集用户输入的数据。通过 v-model 实现双向数据绑定,确保表单数据与 Vue 实例中的数据…

vue实现下拉层级

vue实现下拉层级

Vue实现下拉层级菜单 使用Vue实现下拉层级菜单可以通过递归组件或动态渲染的方式完成。以下是两种常见实现方法: 递归组件实现 创建一个递归组件处理多级菜单结构: <template>…

vue实现弹窗

vue实现弹窗

Vue 实现弹窗的常见方法 使用组件化方式封装弹窗 创建一个独立的弹窗组件(如 Modal.vue),通过 v-if 或 v-show 控制显示隐藏: <template> <…

vue实现表白

vue实现表白

Vue 实现表白页面 使用 Vue 可以快速创建一个动态、交互式的表白页面。以下是一个简单的实现方案: 基础结构 创建一个 Vue 项目或单文件组件,包含以下核心部分: <template&…

vue 实现href

vue 实现href

Vue 实现 href 的方法 在 Vue 中实现 href 功能可以通过多种方式,具体取决于需求场景。以下是几种常见的方法: 使用 <a> 标签 直接使用 HTML 的 <a&g…

vue实现hovuer

vue实现hovuer

Vue 实现 Hover 效果 在 Vue 中实现 hover 效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 直接控制 通过 :hover 伪类实现,无需额外的 JavaScrip…