当前位置:首页 > React

react filter如何使用

2026-02-11 21:53:11React

React 中的 filter 使用方法

filter 是 JavaScript 数组方法,用于筛选符合条件的数据。在 React 中,常用于列表渲染前的数据过滤或状态更新。以下是几种典型场景的使用方法:

过滤列表并渲染

通过 filter 筛选数组后,用 map 渲染结果:

react filter如何使用

const items = [
  { id: 1, name: 'Apple', category: 'fruit' },
  { id: 2, name: 'Carrot', category: 'vegetable' }
];

function ItemList() {
  const filteredItems = items.filter(item => item.category === 'fruit');

  return (
    <ul>
      {filteredItems.map(item => (
        <li key={item.id}>{item.name}</li>
      ))}
    </ul>
  );
}

结合状态管理

通过用户输入动态过滤数据:

react filter如何使用

import { useState } from 'react';

const products = [
  { id: 1, name: 'Laptop', price: 999 },
  { id: 2, name: 'Phone', price: 599 }
];

function ProductList() {
  const [minPrice, setMinPrice] = useState(0);

  const filteredProducts = products.filter(
    product => product.price >= minPrice
  );

  return (
    <div>
      <input 
        type="number" 
        value={minPrice}
        onChange={(e) => setMinPrice(Number(e.target.value))}
      />
      <ul>
        {filteredProducts.map(product => (
          <li key={product.id}>
            {product.name} - ${product.price}
          </li>
        ))}
      </ul>
    </div>
  );
}

多条件过滤

组合多个条件进行复杂筛选:

const books = [
  { title: 'React Guide', author: 'A', year: 2022 },
  { title: 'JavaScript Basics', author: 'B', year: 2020 }
];

function BookFilter() {
  const [searchTerm, setSearchTerm] = useState('');
  const [yearFilter, setYearFilter] = useState(null);

  const filteredBooks = books.filter(book => {
    const matchesSearch = book.title.toLowerCase().includes(searchTerm.toLowerCase());
    const matchesYear = yearFilter ? book.year >= yearFilter : true;
    return matchesSearch && matchesYear;
  });

  // 渲染逻辑...
}

性能优化

对于大型数据集,考虑以下优化手段:

  • 使用 useMemo 缓存过滤结果
  • 分页或虚拟滚动减少渲染量
  • 防抖处理输入过滤
import { useMemo, useState } from 'react';

function LargeList({ data }) {
  const [filter, setFilter] = useState('');

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

  // 渲染逻辑...
}

注意事项

  1. 始终为渲染列表添加 key 属性
  2. 空数组情况需处理友好提示
  3. 复杂过滤逻辑可抽离为独立函数
  4. 考虑使用专业库如 lodash 处理高级过滤需求

分享给朋友:

相关文章

react如何清理

react如何清理

清理 React 项目的方法 清理未使用的依赖项 运行 npm prune 或 yarn install --production 可以移除 node_modules 中未在 package.json…

react项目如何

react项目如何

创建React项目 使用create-react-app工具快速初始化项目。确保已安装Node.js(建议版本≥12.0.0),运行以下命令生成新项目: npx create-react-app m…

react如何配置

react如何配置

配置React项目的基本步骤 安装Node.js和npm 确保系统已安装Node.js(包含npm)。可通过命令行检查版本: node -v npm -v 创建React项目 使用官方工具Creat…

react如何用echarts

react如何用echarts

在React中使用ECharts 安装ECharts和React专用封装库: npm install echarts echarts-for-react 基础使用示例 创建一个基础的柱状图组件:…

react 如何传递props

react 如何传递props

传递 props 的基本方法 在 React 中,props 是从父组件向子组件传递数据的主要方式。通过在子组件的标签上添加属性,可以将数据传递给子组件。 父组件中传递 props: functi…

react 如何使用canvas

react 如何使用canvas

使用 Canvas 在 React 中的方法 基本用法 在 React 中使用 canvas 需要通过 useRef 或 createRef 获取 DOM 节点。以下是一个简单的示例: im…