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

React组件数组类型state新增元素后立即被删除的问题如何解决?

问题根因及解决方法

你遇到的新增元素立即消失的问题,90%以上的场景是表单默认提交行为触发页面刷新,导致state重置为初始值,可按以下步骤逐一排查修复:

  • 检查AddServer按钮是否放在<form>标签内
    若是,需要在提交事件回调中阻止默认行为,示例如下:

    // 如果你是用form的onSubmit触发新增
    handleFormSubmit = (e) => {
      e.preventDefault()
      // 调用HandleAddServer传入表单参数
      this.HandleAddServer(serverNameInput, serverIpInput, serverTypeInput)
    }
    // 如果直接给按钮绑定点击事件,也可以在点击回调里加e.preventDefault()
    
  • 修复this绑定的冗余错误
    你在代码中对HandleAddServer同时使用了类属性箭头函数和constructor手动bind两种this绑定方式,属于冗余操作,可能引发this指向异常,直接删除constructor中以下代码即可:

    this.HandleAddServer = this.HandleAddServer.bind(this);
    
  • 增加边界逻辑避免报错
    当前代码在服务器列表初始为空的场景下,取serverslist[serverslist.length -1].id会抛出未定义错误,可修改newid的计算逻辑:

    const newid = serverslist.length ? serverslist[serverslist.length -1].id + 1 : 1
    
  • 排查其他state覆盖逻辑
    检查是否有其他生命周期方法(如componentDidUpdate)、接口请求回调中对state.servers做了赋值操作,导致新增后本地state被远程数据覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:45:02