【发布时间】:2019-06-22 13:42:44
【问题描述】:
我在 Javascript(React Native)中有一个对象向量,我需要为数组的每个项目添加一个不同的随机键。 问题是,如果我将 key 属性添加到一个对象,它会将相同的键更新到数组的每个元素。
我什至不知道是哪个问题。
我原来的数组是:
[{"nome":"insalata di mare","prezzo":0.3,"qr_code":"qr_valore","quantita":3},{"nome":"insalata di mare","prezzo":0.3,"qr_code":"qr_valore","quantita":3}]
我得到的结果是这样的:
Lista prodotti randomico: [{"nome":"insalata di mare","prezzo":0.3,"qr_code":"qr_valore","quantita":3,"key":"x4idec"},{"nome":"insalata di mare","prezzo":0.3,"qr_code":"qr_valore","quantita":3,"key":"x4idec"}]
只有当项目“相同”时才会出现问题。
componentWillMount(){
this.props.productList.map(item => {
item.key = Math.random().toString(36).substring(7)
})
}
预期结果是每个对象上的不同键,如下所示:
Lista prodotti randomico: [{"nome":"insalata di mare","prezzo":0.3,"qr_code":"qr_valore","quantita":3,"key":"x4idec"},{"nome":"insalata di mare","prezzo":0.3,"qr_code":"qr_valore","quantita":3,"key":"d2jdss"}]
【问题讨论】:
-
你如何构建/创建
this.props.productList。听起来你的问题是你有一个指针数组都指向同一个对象 -
@Pointy 如果我将地图返回重新分配给 props.productList,也会发生同样的情况
-
Array.prototype.map()的回调应该返回新的值来构建一个新的数组。当您直接/就地更改数组中的值时,您的脚本应使用.forEach()。 -
我不太确定是什么原因造成的,但 React 的核心原则是
props应该是不可变的 - 也就是说,您不应该就地更改它们。 -
@xcsob 不要改变你的数据,尤其是
props,如果这些道具一遍又一遍地包含相同的对象this.mappedproductList = this.props.productList.map(item => ({ ...item, key: Math.random().andSoOn }));
标签: javascript arrays react-native dictionary