模糊搜索功能实现【react】

文章介绍了如何在前端使用JavaScript实现模糊搜索功能,基于从后端接收到的全量数据。通过监听数据源变化,利用filter方法过滤数组,根据用户输入的搜索值展示匹配的结果。当无搜索值时,显示全部数据。涉及到的状态管理和数据渲染也在代码中详细展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:前端实现模糊搜索,前提: 后端接口返回全量数据

  1. 全局定义变量
// 数组示例
// const tagAll = [{ id: "6", name: "lqx爱好", phone:122233333 },{ id: "6", name: "lqx爱好",phone:122233333  },{ id: "6", name: "lqx爱好",phone:122233333 }]
const state = useReactive({ dataSource: [], deeplist:[] });
  1. 监听 state.dataSource的变化
useUpdateEffect(() => {
 // tagAll 父组件传过来的列表
    if (tagAll) {
      // 列表中的数据,默认全量数据
      state.dataSource = tagAll;
      // 深拷贝一份数组
      state.deeplist = cloneDeep(tagAll); 
    }
}, [tagAll]);
  1. 搜索使用的方法
 const handlerSearch = (val: string) => {
    const tagList = state.deeplist.filter(
      (item: { name: string }) => {
        return item.name.includes(val) ||item.phone.includes(val)  
      },
    );
    // 如果有值,显示包含val的数组值
    if (val) {
      state.dataSource = tagList;
    } else {
      // 否则显示全部数据
      state.dataSource = state.deeplist;
    }
  };
  1. 页面显示
<Search
  allowClear
  className="drawer-table-search"
  placeholder="姓名/手机号"
  onChange={(e) => {
    handlerSearch(e.target.value);
  }}
/>
<div className="selected-container">
  {state.dataSource.length && state.dataSource.map((item,index) =>  ( 
    <div key={index}>{item.name}</div>
  )}
</div>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值