当前位置:首页 > 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 避免不必要的重新计算。

react中如何筛选

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如何更新

更新 React 版本的方法 检查当前 React 版本 运行以下命令查看项目中安装的 React 版本: npm list react 更新 React 及相关依赖 通过 npm 或 yarn…

如何安装react

如何安装react

安装React的方法 方法一:使用Create React App(官方推荐) Create React App是官方提供的脚手架工具,适合快速搭建React项目。确保已安装Node.js(建议版本≥…

react如何检测

react如何检测

检测 React 应用的方法 使用 PropTypes 进行类型检查 PropTypes 是 React 内置的类型检查工具,用于验证组件的 props 是否符合预期。在开发环境中,PropTypes…

react如何debugger

react如何debugger

调试 React 应用的方法 使用浏览器开发者工具进行调试 React 开发者工具(React DevTools)是调试 React 应用的必备工具。安装 Chrome 或 Firefox 扩展后,可…

react如何减少setState

react如何减少setState

减少 React 中 setState 调用的方法 合并多次状态更新 使用函数式更新方式合并多次 setState 调用。React 会将多次状态更新批量处理,避免不必要的重新渲染。 // 非函…

react 如何算精通

react 如何算精通

精通 React 的标准 精通 React 不仅需要掌握基础语法和核心概念,还需具备解决复杂问题、优化性能和架构设计的能力。以下是衡量 React 精通程度的关键维度: 核心概念与机制 组件…