当前位置:首页 > 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 是一个用于构建用户界面的 JavaScript 库,以下是一些核心概念和使用方法。 安装 React 通过 create-react-app 快速搭建 React…

react性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…

react如何通信

react如何通信

React 组件通信方式 React 组件间的通信方式多样,具体选择取决于组件关系和场景需求。以下是常见方法: 父子组件通信 父组件通过 props 向子组件传递数据,子组件通过回调函数通知父组件…

react如何创建项目

react如何创建项目

使用 Create React App 创建项目 Create React App (CRA) 是官方推荐的 React 项目脚手架工具,适合快速初始化一个现代化的 React 项目。 安装 C…

vue双向实现数据

vue双向实现数据

Vue 双向数据绑定的实现 Vue 的双向数据绑定主要通过 v-model 指令实现,它结合了 v-bind 和 v-on 的功能,能够同步表单输入和应用状态。 基本语法 在表单元素上使用 v-mo…

vue实现数据展示

vue实现数据展示

Vue 数据展示的实现方法 在 Vue 中展示数据通常通过数据绑定、指令和组件等方式实现。以下是几种常见的实现方式: 数据绑定与插值表达式 使用双大括号语法 {{ }} 可以直接在模板中展示数据:…