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

React Native如何实现单按钮切换过滤与清除分类筛选功能

实现方案

核心逻辑说明

你原来的写法有个核心问题:筛选后直接覆盖了results,原始全量数据会丢失,所以清除筛选的逻辑是无效的。你需要先保留完整的原始数据源,再新增一个状态标记当前是否处于筛选状态,点击按钮时根据当前状态切换执行过滤/恢复操作即可。

具体代码实现

  1. 新增必要状态(以React Hooks为例)
// 存储不会被筛选修改的原始全量数据,初始化时赋值你的完整数据集
const [originalResults, setOriginalResults] = useState([]);
// 当前页面展示的结果列表
const [results, setResults] = useState([]);
// 标记是否已经开启category=1的筛选
const [isFiltered, setIsFiltered] = useState(false);
  1. 合并点击事件逻辑
const onPress = () => {
  if (isFiltered) {
    // 已筛选状态:点击恢复原始全量数据
    setResults(originalResults);
    setIsFiltered(false);
  } else {
    // 未筛选状态:点击过滤出category=1的数据
    const filteredResults = originalResults.filter((result) => {
      return result.category === 1;
    });
    setResults(filteredResults);
    setIsFiltered(true);
  }
};
  1. 按钮代码优化(可选,可同步切换按钮文字提示用户)
<Button onPress={onPress}>
  {isFiltered ? '显示全部' : 'Lajme'}
</Button>

补充说明

如果你的全量数据来自props、接口缓存等固定来源,不需要额外存originalResults状态,直接用该全量数据源作为过滤和恢复的基准即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:06:05