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

React组件filter筛选功能失效,选择尺码后始终显示All如何解决?

问题根因

你遇到的筛选状态始终停留在「All」的问题,不是filterProducts函数的问题,是你写的Filter组件里尺码下拉框的配置错误导致的:
所有尺码对应的<option>标签的value属性都被统一设置成了空字符串"",和「All」选项的value完全一致。不管你选中哪个尺码,下拉框读取到的选中值都是空值,自然会一直匹配到「All」选项,筛选逻辑也无法拿到正确的尺码参数。

修正后的Filter组件代码

你只需要把每个尺码option的value改成对应尺码值即可:

function Filter(props) {
  return (
    <div className="filter">
      <div className="filter-result">{props.count} Products</div>
      <div className="filter-sort">
        Order
        <select value={props.sort} onChange={props.sortProducts}>
          <option value="latest">Latest</option>
          <option value="lowest">Lowest</option>
          <option value="highest">Highest</option>
        </select>
      </div>
      <div className="filter-size">
        Filter
        <select value={props.size} onChange={props.filterProducts}>
          <option value="">All</option>
          <option value="XS">XS</option>
          <option value="S">S</option>
          <option value="M">M</option>
          <option value="L">L</option>
          <option value="XL">XL</option>
          <option value="XXL">XXL</option>
        </select>
      </div>
    </div>
  );
}

额外检查项

修改完成后可以再确认两个点:

  • 父组件传入的props.size的取值和上述option的value值保持一致
  • filterProducts函数中,读取选中尺码的逻辑(一般是e.target.value)和后续的商品尺码匹配逻辑,和上述value值匹配即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:45:03