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的值的原因,同步更新值就好了。上面方法做为参考。

相关推荐
SabrinaW7111 分钟前
基于 C++17 与 RTTR 的注册式对象工厂:配置驱动的动态对象创建
java·前端·数据库
Amos_Web14 分钟前
Rspack 源码解析(二十九):CopyRspackPlugin 如何用 glob 把静态文件复制进产物
前端
铁皮饭盒16 分钟前
刷到 FDE 岗位那一刻,我还以为前端又活了
前端·后端
志尊宝24 分钟前
AI原生前端开发(016):端侧AI与React 19结合实战
人工智能·react.js·ai-native
酷炫码神31 分钟前
Day 9|Vue Router:把单页后台拆成能跳转的多页面
前端·javascript·vue.js
Sapphire~42 分钟前
odoo-095 视图的重写规则(全部重写还是部分改写)
开发语言·javascript·ecmascript
肖永威1 小时前
python版微电网仿真工具的前端托管选型:从http.server到FastAPI StaticFiles
前端·python·http·fastapi
风骏时光牛马1 小时前
AI插件开发与效能提效工具箱
前端
IT_陈寒1 小时前
为什么你应该学习Java?
前端·人工智能·后端
weixin_417396831 小时前
监控画面卡顿与录像缺失:码率、NVR与存储容量的排查顺序
前端·网络·技术·酒店·综合布线·弱电