当前位置:首页 > 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())
);

渲染过滤后的结果

react 搜索数据的实现

{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]);

高级搜索实现

多字段搜索支持

react 搜索数据的实现

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

如何手写一个react

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

如何改造react

如何改造react

改造 React 项目的关键方法 分析当前项目结构 通过评估现有组件、状态管理和依赖项,明确需要改进的部分。使用工具如 webpack-bundle-analyzer 识别性能瓶颈。 升级 Reac…

react如何运行

react如何运行

运行React项目的步骤 安装Node.js 确保系统已安装Node.js(建议版本12以上),可从官网下载并安装。Node.js自带npm包管理器,用于后续依赖安装。 创建React项目 使用官方…

如何创建react

如何创建react

创建React项目的步骤 使用Create React App工具快速搭建React项目。确保已安装Node.js(版本需≥14.0.0)和npm(版本需≥5.6)。 打开终端或命令行工具,运行以下…

react如何拓展

react如何拓展

React 拓展方法 使用高阶组件(HOC) 高阶组件是一种复用组件逻辑的方式,通过接收一个组件并返回一个新组件实现功能拓展。例如,为组件添加日志功能: function withLogging…

如何开发react

如何开发react

开发React应用的基本步骤 安装Node.js和npm 确保系统中已安装Node.js(包含npm)。可通过官网下载安装包,安装后验证版本: node -v npm -v 创建React项目…