遍历组件时,key的传值没有稳定的标识符可选择

试过Math.random()生产随机数,这个方案不太好,内存会爆掉,为什么?

getRandomIntInclusive = (min, max) => {
    min = Math.ceil(min)
    max = Math.floor(max)
    return Math.floor(Math.random() * (max - min + 1)) + min
}
rowKey: record => this.getRandomIntInclusive(100000, 999999),

还有其他办法吗?
其实是用了antd的table组件rowKey属性传值的方式,有其他办法吗


没有稳定的标识符可选择的情况下

阅读 6.4k
5 个回答

遍历数组时,如果数组内是对象的话,可以直接使用对象的某个惟一值的属性,比如ID
另外可以使用遍历的索引index.如:
[].map((o, index) => <Component key={index}/>)

antdTable组件中的rowKey你完全可以使用dataSource中的id。如:rowKey={recode => recode.id}

你就是想给table加个rowkey么
1.后端的数据一般都有个唯一的id,让他们返回回来
2.用时间戳作为id,rowKey: record => (new Date()).getTime()
3.用随机数内存为什么会爆掉?

其实吧,遍历的时候把i拿过来拼成key就得了,比如test_${i}
如果模块是你写的那肯定不会重
如果是多人写一个模块,那约定好命名规则就好了

还是建议使用一个在数据中的不会重复的属性作为key值;
不建议使用循环的index或者随机数这类会变动的、无法绑定到数据的值作为key,不然的话会导致重复渲染,浪费性能————react的key的作用也就没了。

rowKey: record => (text, record, index)=>{index}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题