当前位置:首页 > React

react中如何筛选

2026-02-26 12:25:32React

筛选数组数据

在 React 中筛选数组数据通常涉及使用 JavaScript 的 filter() 方法。该方法返回一个新数组,包含符合条件的元素。

const data = [
  { id: 1, name: "Alice", age: 25 },
  { id: 2, name: "Bob", age: 30 },
  { id: 3, name: "Charlie", age: 20 }
];

const filteredData = data.filter(item => item.age > 25);
console.log(filteredData); // [{ id: 2, name: "Bob", age: 30 }]

结合状态管理

在 React 组件中,筛选后的数据通常存储在状态中,以便动态更新 UI。

import { useState } from "react";

function FilterList() {
  const [searchTerm, setSearchTerm] = useState("");
  const [items, setItems] = useState([
    { id: 1, name: "Apple" },
    { id: 2, name: "Banana" },
    { id: 3, name: "Orange" }
  ]);

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

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

筛选对象属性

如果需要基于对象属性进行筛选,可以结合 Object.keys()Object.entries() 进行动态筛选。

const user = {
  name: "John",
  age: 28,
  role: "developer"
};

const filteredKeys = Object.keys(user).filter(key => key !== "age");
const filteredUser = filteredKeys.reduce((acc, key) => {
  acc[key] = user[key];
  return acc;
}, {});

console.log(filteredUser); // { name: "John", role: "developer" }

结合第三方库

如果筛选逻辑复杂,可以使用 Lodash 的 _.filter() 或 Ramda 等工具库优化代码。

import _ from "lodash";

const data = [
  { id: 1, name: "Alice", role: "admin" },
  { id: 2, name: "Bob", role: "user" }
];

const admins = _.filter(data, { role: "admin" });
console.log(admins); // [{ id: 1, name: "Alice", role: "admin" }]

性能优化

对于大数据量筛选,可使用 useMemo 避免不必要的重新计算。

import { useState, useMemo } from "react";

function LargeListFilter() {
  const [query, setQuery] = useState("");
  const items = Array.from({ length: 10000 }, (_, i) => `Item ${i}`);

  const filteredItems = useMemo(() => {
    return items.filter(item => item.includes(query));
  }, [query, items]);

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

react中如何筛选

标签: react
分享给朋友:

相关文章

react native 如何

react native 如何

React Native 开发基础 React Native 是一个用于构建跨平台移动应用的框架,允许开发者使用 JavaScript 和 React 编写代码,同时生成原生 iOS 和 Androi…

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修改…

react如何查

react如何查

React 查询方法 React 提供了多种查询 DOM 元素的方式,以下是几种常见的方法: 使用 ref 通过 useRef 钩子可以获取 DOM 节点的引用,适用于直接操作 DOM 的场景。…

react 如何运行

react 如何运行

运行 React 项目的步骤 安装 Node.js 确保系统已安装 Node.js(建议版本 16+),可通过官网下载并安装。安装后验证版本: node -v npm -v 创建 React 项目…

react如何卸载

react如何卸载

卸载 React 项目或依赖 如果需要完全卸载 React 项目或相关依赖,可以按照以下步骤操作: 删除项目文件夹 直接删除整个项目文件夹是最彻底的方式。确保已备份重要代码或配置文件。 卸载全局安…

react如何开发

react如何开发

React 开发基础步骤 安装 Node.js 和 npm/yarn 确保系统已安装 Node.js(包含 npm)或 Yarn。React 项目依赖这些工具管理包和运行脚本。官方推荐使用 Node.…