Я использую immutability-helper для обновления состояния в React.Я использовал для обновления такие вещи, как это:
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;