react 实现元素的增删功能

react 实现元素的增删功能
在初次开发过程中遇到这样一个问题,动态添加input输入框,刚开始直接用push方法添加,然后再用setState更新,结果无效,后来查了资料,是这样说的:
不要直接改变state 直接对组件state中的属性赋值将不会触发DOM更新,因为React并不知道state被改变了
state的更新可能是异步的 React会一次处理多个对setState的调用以提高性能,所以调用setState()时不应当直接基于另外一些来自state或props中的属性进行计算,很有可能当前计算的值并不是最终的值,当用于计算的另一些值再次变化后,React并不会刷新DOM(因为没有再次调用setState())。为了修正这点,React提供另一种调用setState()函数的方式:传入一个函数,而不是对象

后边就写了这样一个增加的方法,实现了该功能。

 // 增加输入框
  addItem=()=>{
    const obj = { input1:'',input2:'',id:Math.random()}
   
    this.setState(prevState =>({
      inputList:prevState.inputList.concat(obj)
    }))
  }

同样在删除的时候也遇到了问题,我使用splice方法根据索引index进行删除,结果不对,后边采用了这种方法:

removePic(index) {
    this.setState({
      files: this.state.files.filter((_, i) => i !== index)
    })
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值