React input 输入卡顿问题

下面代码会有输入卡顿问题,是因为changeLockWindows会调后端,setPosY不会立即刷新页面值,必须鼠标点击一下,触发onblur事件,input才会刷新

TypeScript 复制代码
const [posY, setPosY] = useState(100);
const changePosY = useCallback((val: number) => {
  setPosY(val);
  changeLockWindows({y: val});
}, [])
  

<input
  className="pill__input"
  type="number"
  value={posY}
  onChange={(event) =>
    changePosY(Number(event.target.value))
  }
/>

解决办法

TypeScript 复制代码
const [posY, setPosY] = useState(100);
// 单纯更新state,不包含延时逻辑
const changePosY = useCallback((val: number) => {
    setPosY(val);
}, [])

// 监听posY变化,延迟执行窗口逻辑
useEffect(() => {
    changeLockWindows({y: posY});
}, [posY])

<input
  className="pill__input"
  type="number"
  value={posY}
  onChange={(event) =>
    changePosY(Number(event.target.value))
  }
/>

原因:是因为我的changeLockWindows回调函数里不知道哪里更改了PosY的值的原因,同步更新值就好了。上面方法做为参考。

相关推荐
程序员黑豆6 小时前
鸿蒙应用开发之跨组件传参:@Provide 与 @Consume 跨层级数据同步详解
前端·harmonyos
0_Error_6 小时前
猫国建设者 修改资源 自动采集
javascript
贩卖黄昏的熊6 小时前
NestJS简明教程——异常处理和日志
javascript·node.js·nest.js
C++、Java和Python的菜鸟7 小时前
第9章 后端Web进阶(AOP)
java·开发语言·前端
我星期八休息8 小时前
扩展— TCP 全连接队列与 tcpdump 抓包
linux·服务器·开发语言·前端·网络·tcp/ip·tcpdump
AC赳赳老秦8 小时前
CSDN 技术社区数据采集:OpenClaw 抓取公开技术热帖,生成领域技术热点周报
java·大数据·前端·数据库·python·php·openclaw
结网的兔子9 小时前
【前端开发】Web端迁移至 uni-app 及鸿蒙扩展方案对比
前端·uni-app·harmonyos
黄泉路醉s9 小时前
在Vant+Vue+TypeScript的H移动前端使用UnoCSS
前端·vue.js·typescript
水瓶夜之9 小时前
.NET 中的新增功能系列文章——.NET SDK中的新增功能
前端·chrome·.net
笨笨狗吞噬者9 小时前
VS Code 内置浏览器打开网页
前端