当前位置:首页 > VUE

vue实现菜单搜索

2026-03-29 00:26:06VUE

Vue 实现菜单搜索功能

数据准备

确保菜单数据以数组形式存储在 Vue 的 data 或 pinia/vuex 中,每个菜单项应包含可搜索的字段(如 title、path 等)。示例数据结构:

data() {
  return {
    menuItems: [
      { title: '首页', path: '/home' },
      { title: '用户管理', path: '/users' }
    ],
    searchQuery: ''
  }
}

实现搜索逻辑

使用计算属性实现实时搜索过滤,避免直接修改原始数据。通过 toLowerCase() 统一大小写提高搜索友好度:

computed: {
  filteredMenu() {
    return this.menuItems.filter(item => 
      item.title.toLowerCase().includes(this.searchQuery.toLowerCase())
    )
  }
}

模板渲染

在模板中使用 v-for 渲染过滤后的菜单,通过 v-model 绑定搜索输入框:

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索菜单...">
    <ul>
      <li v-for="item in filteredMenu" :key="item.path">
        <router-link :to="item.path">{{ item.title }}</router-link>
      </li>
    </ul>
  </div>
</template>

性能优化

对于大型菜单数据,可采用防抖处理(如 lodash.debounce)减少频繁计算:

import { debounce } from 'lodash'
methods: {
  handleSearch: debounce(function(query) {
    this.searchQuery = query
  }, 300)
}

样式增强

添加视觉反馈,如无结果提示和搜索高亮:

<div v-if="filteredMenu.length === 0" class="no-results">无匹配菜单</div>

多字段搜索

支持多字段联合搜索时,扩展过滤逻辑:

vue实现菜单搜索

filteredMenu() {
  return this.menuItems.filter(item => {
    const query = this.searchQuery.toLowerCase()
    return (
      item.title.toLowerCase().includes(query) || 
      item.path.toLowerCase().includes(query)
    )
  })
}

标签: 菜单vue
分享给朋友:

相关文章

vue实现飘窗原理

vue实现飘窗原理

vue实现飘窗原理 飘窗效果通常指在页面上悬浮显示的弹窗或通知,跟随页面滚动或固定在某个位置。Vue实现这一效果主要依赖组件化开发、CSS定位和动态数据绑定。 组件结构设计 创建一个独立的Vue组件…

vue实现模块

vue实现模块

Vue 实现模块化的方法 Vue 支持多种模块化开发方式,可以根据项目需求选择适合的方案。 使用单文件组件(SFC) 单文件组件是 Vue 最常用的模块化方式,将模板、脚本和样式封装在一个 .vue…

vue实现list

vue实现list

Vue 实现列表渲染 在 Vue 中,可以使用 v-for 指令来渲染列表。v-for 指令基于一个数组或对象来渲染一个列表,可以遍历数组或对象的属性。 基本列表渲染 <template>…

vue 实现templateurl

vue 实现templateurl

在 Vue 中,templateUrl 是 Angular 中的一个概念,用于指定外部 HTML 文件作为模板。Vue 本身不直接支持 templateUrl,但可以通过以下方法实现类似功能: 使用…

vue实现rgb调色

vue实现rgb调色

Vue实现RGB调色功能 实现思路 通过Vue的数据绑定和事件处理,动态调整RGB三个通道的值,实时更新显示颜色。 核心代码示例 <template> <div class=…

vue实现html跳页

vue实现html跳页

Vue 实现 HTML 跳页的方法 在 Vue 中实现页面跳转(路由跳转)通常有两种方式:通过 <router-link> 组件或编程式导航。以下是具体实现方法。 使用 <rout…