问答

react做todolist, 选中radio删除该条list,导致紧跟的radio被选中

作者:admin 2021-07-19 我要评论

问题描述 react编写todolist,使用radio进行删除,删除一条后导致紧跟的raido被选中。 代码效果: 选中“学习”进行删除后,紧跟的“读书”也被选中了 相关代码 ...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

问题描述

react编写todolist,使用radio进行删除,删除一条后导致紧跟的raido被选中。
代码效果:
image.png
选中“学习”进行删除后,紧跟的“读书”也被选中了
image.png

相关代码

粘贴代码文本(请勿用截图)

class Lists extends React.Component {
    handleClick(index) {
        this.props.deleteTask(index) // 父级组件进行删除
    }

    render() {
        const {tasks} = this.props
        const taskItems = tasks.map((item, key) => 
            <li key={key}>
                <input type="radio" onClick={this.handleClick.bind(this, key)} />
                {item.name}
            </li>)
        return (
            <ul>{taskItems}</ul>
        )
    }
}
###

这是新手经常犯的一个错误,程序中应该尽量避免不要将map中的遍历下标数(key)作为React Dom的key值来使用。

因为当你选中了“学习”之后,key=1的这个Dom中的Radio置为了选中状态。

而当你把“学习”删除了之后,排在学习之后的“读书”的key值变成了1,此时react比较key=1时,发现只要更新Radio的选中状态即可,所以维持了原来“学习”选中时的状态,也就是将“读书”的Raido置为了选中。

###

之前也遇到过 key值重复导致的 听楼上把key唯一就好

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • react做todolist, 选中radio删除该条li

    react做todolist, 选中radio删除该条li

  • 请问一下为什么我打开的csv文件是空白

    请问一下为什么我打开的csv文件是空白

  • chrome 发送请求有时会出现:Provision

    chrome 发送请求有时会出现:Provision

  • 部分手机端样式不对,select宽度设置无

    部分手机端样式不对,select宽度设置无

腾讯云代理商
海外云服务器