我在 React 中使用 immutability-helper 来更新状态。我曾经更新过这样的事情:
const newElement = update(element, {
x: {
$apply: function(x) {
return x * width;
}
},
markers: {
$set: element.markers
}
});
但是如何更新一个属性,它是一个数组。假设markers是一个数组,如果我使用创建newElement$set
,它只是创建一个引用副本,因此,这个:
newElement.markers[0].text = "sample"
将修改状态。除此以外,正确的方法是什么:
const newMarkers = [];
newElement.markers.forEach(marker => {
const updatedMarkers = update(marker, {
x: {
$apply: function(x) {
return x * width;
}
},
y: {
$apply: function(x) {
return x * height;
}
}
});
newMarkers.push(updatedMarkers);
});
newElement["markers"] = newMarkers;