react循环生成内容修改循环次数后渲染内容错误

react循环生成内容修改循环次数后渲染内容错误

 之前写了一段类似于这样的功能代码,可以通过btn添加或删除一行显示,但有个奇怪的现象,在点击第一行删除时,虽然少了一行,但第一行还在,最后一行不见了。并且查看数据后确定数据没有问题。

 const [values, setValues] = useState<{ title: number,id:stirng }[]>([]);
 return (
    <>
      <Button
          onClick={() => {
             const tempValues = cloneDeep(values);
             tempValues.unshift({id:'...',title: new Date().getTime() });
              setValues(tempValues);
          }}
       >
            add
       </Button>
       {values.map((value, index) => (
            <div key={index}>
                <Button
                    onClick={() => {
                        const tempValues = cloneDeep(values);
                        tempValues.splice(index, 1);
                        setValues(tempValues);
                    }}
                >
                    delete
                    </Button>
                    <InputNumber value={value.title} style={{ width: '100%' }} />
                </div>
         ))}
    </>
);

 最后发现时key的原因,使用了index作为循环的key。推测是因为index会重复,所以react有可能判断无需重新渲染。把循环key由index改为id后解决了问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值