遍历组件时,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}

推荐问题