当前位置:首页 > React

react中如何筛选

2026-01-23 22:31:43React

筛选数据的基本方法

在React中筛选数据通常涉及对数组的操作,结合状态管理实现动态过滤。以下是常见的筛选实现方式:

使用filter方法 通过JavaScript的Array.prototype.filter()方法对数据进行条件筛选:

const filteredData = originalData.filter(item => item.property === filterValue);

结合useState管理筛选状态 维护一个状态变量存储筛选条件:

const [filter, setFilter] = useState('');
const filteredItems = items.filter(item => 
  item.name.toLowerCase().includes(filter.toLowerCase())
);

输入控制与实时筛选

受控输入组件 创建输入框与筛选逻辑的绑定:

<input 
  type="text" 
  value={filter} 
  onChange={(e) => setFilter(e.target.value)} 
/>

防抖优化 使用lodash的debounce避免频繁触发筛选:

import { debounce } from 'lodash';
const handleSearch = debounce((term) => {
  setFilter(term);
}, 300);

多条件筛选实现

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

react中如何筛选

const filtered = data.filter(item => {
  return (
    (category ? item.category === category : true) &&
    (priceRange ? item.price >= priceRange.min && item.price <= priceRange.max : true)
  );
});

使用useMemo优化性能 对筛选结果进行缓存:

const filteredData = useMemo(() => {
  return bigData.filter(/* conditions */);
}, [bigData, filterConditions]);

筛选UI模式

下拉选择器筛选 实现基于select的筛选控制:

<select onChange={(e) => setFilterType(e.target.value)}>
  {options.map(opt => (
    <option key={opt.value} value={opt.value}>{opt.label}</option>
  ))}
</select>

复选框组筛选 处理多选筛选场景:

react中如何筛选

const [selectedFilters, setSelectedFilters] = useState([]);
const toggleFilter = (filter) => {
  setSelectedFilters(prev => 
    prev.includes(filter) 
      ? prev.filter(f => f !== filter)
      : [...prev, filter]
  );
};

服务端筛选

API参数传递 将筛选条件作为请求参数:

useEffect(() => {
  fetch(`/api/items?category=${category}&search=${query}`)
    .then(res => res.json())
    .then(setData);
}, [category, query]);

GraphQL变量 在GraphQL查询中使用筛选变量:

const { data } = useQuery(GET_ITEMS, {
  variables: { filter: { status: 'ACTIVE' } }
});

筛选组件设计模式

受控组件模式 通过props接收筛选值和回调:

function SearchFilter({ value, onChange }) {
  return <input value={value} onChange={onChange} />;
}

上下文共享筛选状态 使用Context跨组件共享筛选条件:

const FilterContext = createContext();
function App() {
  const [filters, setFilters] = useState({});
  return (
    <FilterContext.Provider value={{ filters, setFilters }}>
      {/* 子组件 */}
    </FilterContext.Provider>
  );
}

标签: react
分享给朋友:

相关文章

react实现vue

react实现vue

React 实现 Vue 功能 React 和 Vue 是两种不同的前端框架,但可以通过一些方法在 React 中实现 Vue 的特性。以下是几种常见 Vue 功能在 React 中的实现方式: 双…

react如何验证

react如何验证

表单验证方法 在React中验证表单数据通常使用以下几种方式: 内置HTML5验证 利用HTML5原生表单验证属性如required、pattern等,结合form.noValidate属性禁用浏览…

react如何diff

react如何diff

React Diff 算法原理 React 的 Diff 算法是 Virtual DOM 的核心部分,用于高效更新真实 DOM。其核心思想是通过对比新旧 Virtual DOM 树的差异,最小化 DO…

如何读react源码

如何读react源码

理解React源码的结构 React源码托管在GitHub上,主要分为几个核心模块:react、react-dom、react-reconciler等。react包包含核心API和组件逻辑,react…

react如何用echarts

react如何用echarts

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

react如何插入图片

react如何插入图片

在React中插入图片的方法 使用import语句引入图片文件,适用于现代前端构建工具(如Webpack、Vite)。图片会被处理为模块,并生成优化后的路径。 import logo from '.…