You need to enable JavaScript to run this app. React如何避免重复编写相似的列表项onClick事件
优惠活动
大模型
产品
解决方案
定价
更多

React如何避免重复编写相似的列表项onClick事件

列表代码复用的具体落地方案

按照以下三步改造即可,不需要复杂的抽象设计:

  1. 抽离所有重复项的差异配置
    你当前编写的列表项,除了展示文本、点击后设置的sortTitle值、触发的排序action函数不一样,其余点击逻辑完全重复。先把这些差异点整理成独立的配置数组,把对应的action引用存进去即可:
    const sortOptions = [
      {
        text: "Release Date",
        targetSortTitle: "Release Date",
        actionCreator: sortByReleaseDate
      },
      {
        text: "Rating",
        targetSortTitle: "Rating",
        actionCreator: sortByRating
      },
      {
        text: "Run Time",
        targetSortTitle: "Run Time",
        actionCreator: sortByRuntime
      },
      {
        text: "Title",
        targetSortTitle: "Title",
        actionCreator: sortByTitle
      }
    ]
    
  2. 封装统一的点击处理函数
    把重复的onClick逻辑提取成独立方法,接收当前选项的配置作为入参,替代之前每个li里手写的重复代码:
    const onSortItemClick = (option) => {
      setSortTitle(option.targetSortTitle)
      setIsActive(false)
      dispatch(option.actionCreator(searchedMovies))
    }
    
  3. 通过map批量渲染列表
    直接遍历上面定义的配置数组,一次性生成所有li元素,注意给每个元素加上唯一的key属性,避免React列表渲染警告:
    <ul>
      {sortOptions.map((option) => (
        <li
          key={option.targetSortTitle}
          onClick={() => onSortItemClick(option)}
        >
          <a href="#">{option.text}</a>
        </li>
      ))}
    </ul>
    

长期维护提示

后续如果需要新增排序选项,完全不需要修改渲染和事件逻辑,只需要在sortOptions数组里追加一条对应配置即可,长期维护成本会低很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 06:45:00