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

使用React Beautiful DnD拖拽排序:将顺序保存至数组catid字段

修改方案

直接在拖拽完成、调整好数组顺序后,遍历整个新数组,为每个元素更新catid为当前索引即可,修改后的代码如下:

function onDragEnd(result) {
    // 复制原数组,避免直接修改状态
    const newItems = [...customgearUpdate];
    // 移除并插入拖拽项,调整顺序
    const [removed] = newItems.splice(result.source.index, 1);
    newItems.splice(result.destination.index, 0, removed);
    
    // 遍历数组,为每个元素同步catid为当前索引
    const updatedItems = newItems.map((item, index) => ({
        ...item,
        catid: index
    }));
    
    // 更新状态
    setcustomgearUpdate(updatedItems);
}

说明:

  • 使用map遍历调整顺序后的数组,为每个元素创建新对象(通过展开运算符...item保留原有属性),同时将catid设为当前遍历的索引
  • 这种方式确保数组中所有元素的catid都和它们的实际位置索引完全一致,而不只是被拖拽的那一项
  • 保持了React状态更新的不可变性原则,避免直接修改原数组元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:39:50