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

使用re-resizable时onResize每次仅增1-2像素的问题求助

解决re-resizable/react-resizable调整尺寸时每次仅增减1-2像素的问题

问题核心是错误理解了resize回调参数的含义:你代码里的w.width不是本次调整的像素增量,而是调整后的最终宽度值。你用width + w.width相当于把当前状态宽度和最终宽度相加,导致状态更新逻辑混乱,表现为每次仅增减1-2像素。

修正方案

直接使用回调返回的最终宽度值更新状态,无需和当前width相加:

1. 修正回调函数

function onResize(event: any, e: any, ref: any, w: any) {
  // w.width 是调整后的最终宽度,直接赋值给状态
  setWidth(w.width);
};

2. 统一组件尺寸绑定

确保Resizable的size属性和内部div的宽高完全匹配,避免样式冲突:

<Resizable 
  size={{ width: width, height: 55 }} // 和内部div高度统一
  onResizeStop={onResize}
>
  <div 
    id={id} 
    style={{ width: width, height: 55 }} 
    className="box-border whitespace-pre-wrap break-words leading-[1.5px] absolute z-5 bg-white border-[#d9d9d9] border-[2px] p-3 m-2.5 flex justify-center rounded-[10px]"
  >
    <div className="flex flex-col w-[88%] mr-[25px]">
      {nameElement}
    </div>
  </div>
</Resizable>

补充说明

如果需要获取本次调整的像素增量,可以用w.width - width计算,但不推荐依赖当前状态值做增量计算——因为React状态更新是异步的,当前width可能不是最新值,直接使用回调返回的最终宽度是最可靠的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:24:58