You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现无白屏的React产品列表过滤?分类按钮点击页面消失求助

React产品列表过滤二次点击页面消失的修复方案

问题根因

你这个问题大概率是过滤逻辑里踩了「直接修改原始数据源」的坑——第一次点击分类过滤后,原始产品数据被截断了,第二次再点的时候,没东西可过滤,自然页面就空了。

修复思路与代码示例

核心就是保留完整的原始数据副本,每次过滤都基于原始数据操作:

  • 把所有产品的完整数据存在常量或useRef里,全程不要修改这份数据;
  • 用单独的state存储当前选中的分类,比如activeCategory;
  • 渲染时根据当前选中的分类,从原始数据中动态筛选要展示的产品。

关键代码片段:

// 存储完整的原始产品数据,不要修改它
const originalProducts = [/* 你的全部产品数据 */];
// 仅记录当前选中的分类
const [activeCategory, setActiveCategory] = useState('all');

// 每次渲染都从原始数据中筛选
const filteredProducts = activeCategory === 'all' 
  ? originalProducts 
  : originalProducts.filter(product => product.category === activeCategory);

// 分类按钮点击只更新选中状态
const handleCategorySelect = (category) => {
  setActiveCategory(category);
};

为什么之前的尝试没解决问题?

如果之前只是把数据存在内存中但依然直接修改了这份内存数据,问题必然还会存在。必须保证每次过滤的数据源都是完整无修改的原始数据,不能基于上一次过滤后的结果再次筛选。

内容的提问来源于stack exchange,提问作者Emmanuel Ilegbodu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 10:01:15