当前位置:首页 > React

react 搜索数据的实现

2026-01-27 11:09:21React

搜索数据的实现方法

在React中实现搜索功能通常涉及以下几个关键步骤:

使用状态管理存储搜索词

const [searchTerm, setSearchTerm] = useState('');

创建输入框处理用户输入

<input
  type="text"
  placeholder="Search..."
  value={searchTerm}
  onChange={(e) => setSearchTerm(e.target.value)}
/>

过滤数据实现搜索功能

const filteredData = data.filter(item =>
  item.name.toLowerCase().includes(searchTerm.toLowerCase())
);

渲染过滤后的结果

{filteredData.map(item => (
  <div key={item.id}>{item.name}</div>
))}

性能优化方案

防抖处理减少频繁过滤

import { debounce } from 'lodash';

const handleSearch = debounce((term) => {
  setSearchTerm(term);
}, 300);

<input onChange={(e) => handleSearch(e.target.value)} />

使用useMemo缓存过滤结果

const filteredData = useMemo(() => {
  return data.filter(item =>
    item.name.toLowerCase().includes(searchTerm.toLowerCase())
  );
}, [data, searchTerm]);

高级搜索实现

多字段搜索支持

const filteredData = data.filter(item =>
  Object.keys(item).some(key =>
    String(item[key]).toLowerCase().includes(searchTerm.toLowerCase())
  )
);

添加搜索类型选择

const [searchType, setSearchType] = useState('name');

<select value={searchType} onChange={(e) => setSearchType(e.target.value)}>
  <option value="name">Name</option>
  <option value="email">Email</option>
</select>

const filteredData = data.filter(item =>
  item[searchType].toLowerCase().includes(searchTerm.toLowerCase())
);

服务器端搜索实现

API请求封装

const [results, setResults] = useState([]);

const fetchSearchResults = async (query) => {
  const response = await axios.get(`/api/search?q=${query}`);
  setResults(response.data);
};

useEffect(() => {
  if (searchTerm) {
    fetchSearchResults(searchTerm);
  }
}, [searchTerm]);

显示加载状态

const [isLoading, setIsLoading] = useState(false);

const fetchSearchResults = async (query) => {
  setIsLoading(true);
  try {
    const response = await axios.get(`/api/search?q=${query}`);
    setResults(response.data);
  } finally {
    setIsLoading(false);
  }
};

{isLoading ? <div>Loading...</div> : (
  results.map(result => <div key={result.id}>{result.name}</div>)
)}

react 搜索数据的实现

标签: 数据react
分享给朋友:

相关文章

vue实现表格数据修改

vue实现表格数据修改

实现表格数据修改的基本思路 在Vue中实现表格数据修改通常涉及以下核心步骤:数据绑定、编辑状态切换、表单输入处理和数据提交。以下是一个典型实现方案: 数据绑定与渲染 使用v-for指令循环渲染表格数…

vue数据代理底层实现

vue数据代理底层实现

Vue 数据代理的底层实现原理 Vue 的数据代理是通过 Object.defineProperty 或 Proxy(Vue 3)实现的,将数据对象的属性代理到 Vue 实例上,使得可以直接通过 th…

vue怎么实现拖动数据

vue怎么实现拖动数据

实现拖动数据的基本方法 在Vue中实现拖动数据通常使用HTML5的拖放API或第三方库如vuedraggable。以下是两种常见方法的详细说明: 使用HTML5原生拖放API HTML5提供了dra…

vue实现数据结构图

vue实现数据结构图

Vue 实现数据结构图的方法 使用第三方库 Vue 可以与多种图表库结合使用,例如 D3.js、ECharts 或 Vis.js。这些库提供了强大的图形渲染能力,适合展示复杂的数据结构图。 安装…

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impor…

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实 D…