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

如何在React.js中将输入聚焦逻辑封装为可复用函数?

复用输入框聚焦事件逻辑的实现方案

核心思路

把重复的聚焦处理逻辑抽离成通用函数,每个输入框只需传递对应的数据源项和事件对象即可复用逻辑,避免代码冗余。

具体实现步骤

  1. 定义通用处理函数
    将解析数据、计算参数、调用move_box_click的逻辑封装成一个可复用的函数,同时优化重复的字符串拆分操作:
const handleInputFocus = (dataItem, e) => {
  // 校验数据源有效性,避免报错
  if (!dataItem?.name) return;
  
  // 拆分并转换为数字类型,解构赋值提升可读性
  const [x, y, endX, endY] = dataItem.name.split(",").map(Number);
  
  // 计算所需参数
  const posX = x * docWidth;
  const posY = y * docHeight;
  const boxHeight = endY * docHeight - posY + 2;
  const boxWidth = endX * docWidth - posX + 2;
  
  // 调用目标方法
  move_box_click(posX, posY, boxHeight, boxWidth, e);
};
  1. 在输入框中复用函数
    每个输入框的onFocus事件只需调用这个通用函数,并传入对应的数据源子项(如data.One、data.Two)和事件对象:
<input
  type="text"
  onFocus={(e) => handleInputFocus(data?.One, e)}
/>

<input
  type="text"
  onFocus={(e) => handleInputFocus(data?.Two, e)}
/>

优化点说明

  • 使用可选链操作符?.避免data或子项不存在时抛出错误
  • 只执行一次split操作并转换为数字,减少重复计算,提升性能
  • 解构赋值让参数含义更清晰,代码可读性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:10:39