vue3 antd table表格的增删改查(一)input输入框根据关键字搜索【后台管理系统纯前端filter过滤】
创始人
2024-02-23 05:46:44
0

input输入框——关键字模糊搜索

  • 引言铺垫
  • 场景复现
  • 解决方案
      • 筛选的实现
      • 重置筛选信息
      • 优化处理(监听的实现)

功能实现可能要用到的知识:
vue3数据变化侦测&&信息筛选过滤.filter() .map() .forEach(). find()🔥
vue3【watch检测/监听】watch检测数据变化&&监听使用🔥🔥
vue3+ant design vue+ts实战【ant-design-vue组件库引入】🔥
vue3 antd 项目实战——table表格(一文教你实现最简单的table表格)🔥🔥

引言铺垫

  • 从后端数据库中获取到数据后,需要将其存放在后台的页面中,通常以表格的形式存在增删改查是每一个后台管理系统对于数据操作必不可少的部分
  • 因此 增删改查 将作为一个小专栏出现在我的主页,后续会持续更新~~
  • 表格查找有两种方法,一种是纯前端实现,另一种是调用接口前后端联动实现
  • 本期文章重点介绍纯前端过滤的实现方法

场景复现

通过接口将从后端获取到的数据展现在表格内,现在需要实现根据关键字的搜索功能

大致功能需求如下:

  • 输入关键字 点击搜索按钮 能够搜索相应的内容
  • 表格能够根据搜索的内容 实时更新数据
  • 当输入框内容清空之后 表格内容能够实时更新优化

初始表格效果:(一文教你实现最简单的table表格)
在这里插入图片描述

源代码:(样式按需设计)
页面组件部分:


样式部分:


解决方案

UI组件库沿用 ant design vue组件库 ,本次功能实现需要用到icon图标搜索框input按钮button表格table需要回顾组件库使用的可以在文章开头中按需查找。

筛选的实现

原理:

  • 输入框输入数据 → 点击搜索按钮 → 调用搜索函数 → 页面数据更新
  • 双重筛选 → 筛选标题 和 相应内容 (可以通过标题单独搜索 但不能通过内容单独搜索)

代码截图:(含注释)
在这里插入图片描述
搜索函数 源代码:(含注释)

const searchForm = () => {console.log(data.selectData.title, data.selectData.body)let arr: [LisInt][] = []//查询条件是否有值if (data.selectData.title || data.selectData.body) {if (data.selectData.title) {//将过滤出来的数组赋值给arrarr = data.list.filter((v: any) => {return v.title.indexOf(data.selectData.title) !== -1})}if (data.selectData.body) {//将过滤出来的数组赋值给arrarr = (data.selectData.body ? arr : data.list).filter((v: any) => {return v.body.indexOf(data.selectData.body) !== -1})}} else {arr = data.list// 将查询结果赋值给data.list在页面中展示}data.list = arrconsole.log(arr)
}

重置筛选信息

原理: 点击重置按钮 → 调用重置函数 → 返回主界面 → 重新获取数据

重置函数 源代码:

// 重置筛选信息
const  formRef= ref()
const router = useRouter()
const resetForm = () => {formRef.value?.resetFields()router.push('/home')
}

优化处理(监听的实现)

原理:清除输入框输入内容 → 检测输入框内容是否为空 → 为空则重新获取数据 → 更新表格数据

监听 源代码:(含注释)

// 数据监听
watch([() => data.selectData.title], // 监听标题[() => data.selectData.body],  // 监听内容() => {// 如果输入框中的内容为空,则再次请求数据if (data.selectData.title === "" || data.selectData.body === "") {initGetList() // 调用函数}}
);
// initGetList函数
// const initGetList = async () => {
//                const { data: res } = await getList(data)
//                console.log(res)
//                data.list = res.data
//            }

最终实现效果:
🔥根据标题关键字搜索,内容如下:
在这里插入图片描述
🔥清除输入框内容后,页面自动更新数据:
在这里插入图片描述
🔥输入标题和内容,实现双重搜索:
在这里插入图片描述
🔥单独使用内容搜索,无法实现搜索功能:
在这里插入图片描述
补充说明:

  • 在搜索框内容为空,但用户坚持要搜索时,应弹出弹窗,提醒用户搜索框输入内容不能为空。 这个功能的实现很简单,在搜索函数中添加一个判断操作,如果内容为空则启动弹窗。
  • 不难发现,输入框中有一个清除按钮,这个功能的实现也很简单,在input标签中添加allow-clear即可,但这个功能可能会与重置功能起到冲突,我们可以将重置功能设置为重置两个输入框的内容并返回主界面

以上就是用纯前端过滤的方法实现搜索框根据关键字模糊搜索的功能的全部内容。

下期文章将会用 前后端交互的方式 实现根据关键字进行模糊搜索的功能。

今天的故事到这就结束了,觉得这篇文章有用的小伙伴们,可以点赞➕关注哦~🔥🔥🔥

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...