react中涉及的增加,删除list方式

 更新时间:2024年01月03日 09:47:39   作者:赵乘风_i  
这篇文章主要介绍了react中涉及的增加,删除list方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

react涉及的增加,删除list

做的项目中有一个功能是需要对多个Input组成的list可以新增和删除。

刚开始想的解决是直接使用index来做,这个可以新增,但是做不了删除,会出现list错乱的问题,即使是删除中间的某一个,但总也是删除的最后一个。原因是index-1只会删除最后一个,再重新渲染后会刷新列表。

如果只是新增但是不填写内容,那么删除了也无所谓,但如果新增后填写再删除就出问题了。

解决办法是使用唯一标识符,也就是id,就是前端自己生成id,根据id删除就不会错乱了。

在这个项目中,因为新建和编辑是同一个页面,而且在进入这个页面之后会根据是否有xxId来区分是新建还是编辑,因为会请求两个不同的接口来获取数据。所以在从接口请求回来的返回值那边做了处理,添加了唯一标识符,也就是selfId。我是对dispatch后获取的result进行操作。

如下:

const dealListData = (result) => {
    // console.log('listR', result);
    if (result.length===0) {
        result.push({
            selfId:1
        });
    } else {
        result.map((item, index) => {
            item.selfId = String(index + 1);
            return item;
        });
    }
    // console.log(result);
    return result;
};

新增的函数

list是指几个Input组成的块,是要对其新增和删除

handleAdd = () => {
     let selfId = Number(this.state.list[this.state.list.length-1].selfId) + 1;
     // console.log(this.state.list[this.state.list.length-1].selfId +1);
     this.props.form.validateFields((err, value) => {
        if (!err) {
            this.state.list.push({
                selfId:selfId
        });
        this.props.onChange(this.state.list);
      }
   });
}

删除的函数

handleDeleteItem = (i, selfId) => {
    this.setState({ list: this.state.list.filter(item => item.selfId !== selfId) }, () => {
          // console.log('delete', this.state.list);
          this.props.onChange(this.state.list);
    });
}

根据selfId进行删除

因为list是我又重新封装的子组件,而值要实时反映到父组件上去,需要都需要通过this.props.onChange事件去实时更新。这样删除和新增就没有问题了。

总结

不能根据下标index进行新增删除,会错乱。需要有唯一标识符用来更新。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • React SSR架构Streaming Render与Selective Hydration解析

    React SSR架构Streaming Render与Selective Hydration解析

    这篇文章主要为大家介绍了React SSR架构Streaming Render与Selective Hydration解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • react中关于函数调用()与bind this的原因及分析

    react中关于函数调用()与bind this的原因及分析

    这篇文章主要介绍了react中关于函数调用()与bind this的原因及分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 浅谈react受控组件与非受控组件(小结)

    浅谈react受控组件与非受控组件(小结)

    本篇文章主要介绍了浅谈react受控组件与非受控组件(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 详解react setState

    详解react setState

    这篇文章主要介绍了react setState的相关资料,帮助大家更好的理解和学习使用react,感兴趣的朋友可以了解下
    2021-04-04
  • 浅谈webpack+react多页面开发终极架构

    浅谈webpack+react多页面开发终极架构

    这篇文章主要介绍了浅谈webpack+react多页面开发终极架构,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • 基于React Native 0.52实现轮播图效果

    基于React Native 0.52实现轮播图效果

    这篇文章主要为大家详细介绍了基于React Native 0.52实现轮播图效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • react-native只保留3x图原理解析

    react-native只保留3x图原理解析

    这篇文章主要为大家介绍了react-native只保留3x图原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • ReactNative实现弧形拖动条的代码案例

    ReactNative实现弧形拖动条的代码案例

    本文介绍了ReactNative实现弧形拖动条,本组件使用到了react-native-svg和PanResponder,结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • 浅谈React Component生命周期函数

    浅谈React Component生命周期函数

    React组件有哪些生命周期函数?类组件才有的生命周期函数,分为几个阶段:挂载,更新,卸载,错误处理,本文主要介绍了这个阶段,感兴趣的可以了解一下
    2021-06-06
  • React+Node.js实现大文件传输与断点续传

    React+Node.js实现大文件传输与断点续传

    这篇文章主要为大家详细介绍了如何使用React前端和Node.js后端实现大文件传输和断点续传的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以参考下
    2024-12-12

最新评论