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

React中如何将多个onChange函数重构为单个函数

优化多输入框的 onChange 逻辑

通用 onChange 函数

把重复的字段修改逻辑合并成一个通用函数,利用输入框的name属性动态指定要修改的字段:

const changeItemField = (event: any, id: string) => {
  const { name, value } = event.target;
  const newItems = [...items];
  const item = newItems.find((item) => item.id === id);
  
  if (item) {
    item[name] = value;
    setItems(newItems);
  }
};

修改后的输入框代码

所有输入框复用同一个changeItemField函数,只需保证输入框的name属性与要修改的item字段名一致:

<input 
  type='text' 
  name="name" 
  className='item-info-text' 
  placeholder='物品名称' 
  maxLength={255} 
  value={item.name} 
  onChange={(e) => changeItemField(e, item.id)}
/>
<input 
  type='text' 
  name="description" 
  className='item-info-text' 
  placeholder='物品描述' 
  maxLength={255} 
  value={item.description} 
  onChange={(e) => changeItemField(e, item.id)}
/>

优化说明

  • 无需再编写仅字段名不同的重复函数,新增输入框时只要name属性匹配item字段,就能直接复用通用函数
  • 增加if (item)判断,避免找不到对应id的条目时出现报错,提升代码健壮性
  • 保留原有数组浅拷贝逻辑,符合React状态更新的不可变要求

内容的提问来源于stack exchange,提问作者Jan Kamoń

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:22:07