当前位置:首页 > React

react中如何筛选

2026-02-12 02:33:17React

筛选数组并渲染

在React中筛选数组通常涉及使用filter方法结合状态管理。以下是一个基础示例:

import { useState } from 'react';

function FilterList() {
  const [searchTerm, setSearchTerm] = useState('');
  const items = ['Apple', 'Banana', 'Cherry', 'Date'];

  const filteredItems = items.filter(item =>
    item.toLowerCase().includes(searchTerm.toLowerCase())
  );

  return (
    <div>
      <input
        type="text"
        placeholder="Search..."
        onChange={(e) => setSearchTerm(e.target.value)}
      />
      <ul>
        {filteredItems.map((item, index) => (
          <li key={index}>{item}</li>
        ))}
      </ul>
    </div>
  );
}

复杂对象筛选

当处理对象数组时,可以扩展筛选逻辑:

react中如何筛选

const products = [
  { id: 1, name: 'Laptop', category: 'Electronics' },
  { id: 2, name: 'Shirt', category: 'Clothing' }
];

function ProductList() {
  const [filters, setFilters] = useState({
    name: '',
    category: ''
  });

  const filteredProducts = products.filter(product => {
    return (
      product.name.toLowerCase().includes(filters.name.toLowerCase()) &&
      (filters.category === '' || product.category === filters.category)
    );
  });

  // 渲染逻辑...
}

性能优化

对于大型数据集,考虑使用useMemo避免不必要的重新计算:

react中如何筛选

import { useState, useMemo } from 'react';

function BigDataList({ data }) {
  const [filterValue, setFilterValue] = useState('');

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

  // 渲染逻辑...
}

多条件筛选

实现组合筛选条件时,可以构建动态筛选函数:

function MultiFilter() {
  const [filters, setFilters] = useState({
    priceRange: [0, 100],
    inStock: false
  });

  const filterProducts = (products) => {
    return products.filter(product => {
      const priceMatch = product.price >= filters.priceRange[0] && 
                        product.price <= filters.priceRange[1];
      const stockMatch = !filters.inStock || product.inStock;
      return priceMatch && stockMatch;
    });
  };

  // 渲染逻辑...
}

使用第三方库

对于复杂筛选需求,可以考虑使用专用库如match-sorter

import { matchSorter } from 'match-sorter';

function EnhancedSearch({ items }) {
  const [search, setSearch] = useState('');

  const results = matchSorter(items, search, {
    keys: ['name', 'description']
  });

  // 渲染逻辑...
}

标签: react
分享给朋友:

相关文章

理解如何react

理解如何react

理解React的核心概念 React是一个用于构建用户界面的JavaScript库,专注于通过组件化开发提高代码的可维护性和复用性。其核心思想包括虚拟DOM(Virtual DOM)和单向数据流,能够…

如何配置react

如何配置react

配置React项目的步骤 安装Node.js和npm 确保系统已安装Node.js(包含npm)。可通过官网下载并安装最新版本。安装完成后,运行以下命令验证版本: node -v npm -v 创建…

react如何同步

react如何同步

React 同步状态管理方法 在 React 中实现同步状态管理,可以通过以下多种方式实现: 使用 useState 和 useEffect 钩子 通过 useState 定义状态,使用 useEf…

typescript react 如何

typescript react 如何

TypeScript 与 React 结合使用的方法 在 React 项目中使用 TypeScript 可以提升代码的可维护性和类型安全性。以下是一些关键步骤和最佳实践: 安装 TypeScript…

react如何折叠

react如何折叠

在 React 中实现折叠功能 使用 useState 管理折叠状态 通过 useState 定义一个状态变量来控制折叠面板的显示与隐藏。例如: const [isCollapsed, setIsC…

react路由如何配置

react路由如何配置

React 路由配置方法 安装 React Router 使用 npm 或 yarn 安装 React Router 的 DOM 版本: npm install react-router-dom #…