当前位置: 首页 > news >正文

vue3 数据过滤方法

在Vue 3中,你可以使用多种方法来过滤数据。以下是几种常见的实现方式:

1. 使用计算属性(Computed Properties)

计算属性是Vue中用于声明式地描述如何根据其他响应式状态计算值的一种方式。你可以使用计算属性来过滤数组。

<template><div><ul><li v-for="item in filteredItems" :key="item.id">{{ item.name }}</li></ul></div>
</template><script setup>
import { ref, computed } from 'vue';const items = ref([{ id: 1, name: 'Apple' },{ id: 2, name: 'Banana' },{ id: 3, name: 'Cherry' }
]);const searchQuery = ref('');const filteredItems = computed(() => {return items.value.filter(item => item.name.toLowerCase().includes(searchQuery.value.toLowerCase()));
});
</script>

2. 使用方法(Methods)

你也可以在组件的方法中实现过滤逻辑,然后返回过滤后的数组。

<template><div><input v-model="searchQuery" placeholder="Search..."><ul><li v-for="item in filterItems()" :key="item.id">{{ item.name }}</li></ul></div>
</template><script setup>
import { ref } from 'vue';const items = ref([{ id: 1, name: 'Apple' },{ id: 2, name: 'Banana' },{ id: 3, name: 'Cherry' }
]);const searchQuery = ref('');function filterItems() {return items.value.filter(item => item.name.toLowerCase().includes(searchQuery.value.toLowerCase()));
}
</script>

3. 使用侦听器(Watchers)和过滤器(Filters,注意:Vue 3中不推荐使用过滤器,但可以模拟)

虽然Vue 3不推荐使用过滤器,但你可以通过创建一个函数并使用它来模拟过滤器的行为。同时,你可以使用watch来观察某个数据的变化,并相应地更新过滤后的数据。

<template><div><input v-model="searchQuery" placeholder="Search..."><ul><li v-for="item in filteredItems" :key="item.id">{{ item.name }}</li></ul></div>
</template><script setup>
import { ref, watch } from 'vue';const items = ref([{ id: 1, name: 'Apple' },{ id: 2, name: 'Banana' },{ id: 3, name: 'Cherry' }
]);
const searchQuery = ref('');
const filteredItems = ref([]);watch(searchQuery, (newQuery) => {filteredItems.value = items.value.filter(item => item.name.toLowerCase().includes(newQuery.toLowerCase()));
});
</script>

4. 使用第三方库(例如lodash)的filter函数(可选)

如果你喜欢使用lodash这样的库来处理数组,你可以这样做:

import { ref } from 'vue';
import _ from 'lodash'; // 确保已经安装了lodash包const items = ref([...]); // 同上定义的items数组
const searchQuery = ref(''); // 同上定义的搜索查询字符串ref对象
const filteredItems = ref([]); // 同上定义的过滤后items的ref对象,初始为空数组。这里不需要在setup中使用watch,因为可以直接使用_.filter。filteredItems.value = _.filter(items.value, item => item.name.toLowerCase().includes(searchQuery.value.toLowerCase())); // 直接使用lodash的filter函数进行过滤。注意:这种方式通常在计算属性或侦听器中更常用,而不是直接赋值。这里只是为了演示如何使用lodash。更好的做法是在计算属性或侦听器中使用它。例如:`computed(() => _.filter(items.value, ...))`。但请注意,直接在模板或方法中使用这种方式可能会导致不必要的性能开销,因为它在每次组件渲染时都会执行。更好的做法是将过滤逻辑放在计算属性或侦听器中。例如:`computed(() => _.

http://www.xdnf.cn/news/993871.html

相关文章:

  • 基于SpringBoot的校园网上求职系统设计与实现
  • 贪心算法之分发饼干(一)
  • 系统安全之身份认证
  • GaussDB创建数据库存储
  • 自建RustDesk服务器
  • OpenCV 多边形绘制与填充
  • AI 工具打造专业级 PPT 配图:从文字到视觉的高效转化指南
  • 多线程安全:核心解决方案全解析
  • Fancy桌面:专为开发者打造的高效协作平台
  • 【生产实践】DolphinScheduler集群MySQL数据源切换终极指南|附生产环境避坑手册
  • 【玄机】日志分析-IIS日志分析
  • learngitbranching git游戏笔记
  • Unity性能优化-C#编码模块
  • 【报错解决】RTX4090 nvrtc: error: invalid value for --gpu-architecture (-arch)
  • 基于大模型预测单纯性孔源性视网膜脱离的技术方案大纲
  • 开疆智能ModbusTCP转Devicenet网关连接远程I/O配置案例
  • [免费]微信小程序音乐播放器(爬取网易云音乐数据)(node.js后端)【论文+源码】
  • AI大模型竞赛升温:百度发布文心大模型4.5和X1
  • NocoBase 本周更新汇总:优化及缺陷修复
  • 计算机系统(6)
  • React状态管理——zustand
  • 【Java开发日记】简单说一说使用 Netty 进行 Socket 编程
  • STM32——“扩展动态随机存储器SDRAM”
  • C#实现无声视频的配音与字幕生成器
  • DevSecOps实践:用Terraform策略检查筑牢基础设施安全防线
  • 阿里云实践创建实例步骤
  • 通信网络基础概念
  • Linux 进程和计划任务管理
  • ARXML可视化转换工具使用说明
  • 湖北理元理律师事务所:债务优化的法律逻辑与生活平衡术