L'objet n'est pas extensible à l'erreur lors de la création de nouveaux attributs pour tableau d'objets
J'ai une fonction qui doit s'étendre un tableau javascript, y compris un nouvel attribut appelé selected
:
export const initSelect = (data) => {
let newData = data.concat();
newData.map((item) => {
item.selected = false;
})
return newData;
}
data
est un ReactJS valeur de l'état (vient de this.state.data
lors de l'appel de la fonction), mais cela ne semble pas être un problème car newData
est une nouvelle copie de data
tableau...
Im obtenir l'erreur suivante:
TypeError: Cannot add property selected, object is not extensible
OriginalL'auteur Mendes | 2017-08-21
Vous devez vous connecter pour publier un commentaire.
Vous avez probablement besoin de copier les objets:
concat()
.dire que l'OP...
l'op est abuser concat et carte. Je pense que votre solution ne doit pas être de détourner eux aussi.
Fera l'objet retourné un exemplaire de
data
? Je vais utiliser le retour à l'ensemble de la ReactJS état de l'objet....OriginalL'auteur Jonas Wilms
Vous ne pouvez pas étendre
item
avecselected
bien, et votre tableau est juste une copie.Si vous voulez être en mesure de prolonger, vous aurez à faire une copie de votre tableau. Il peut être suffisant avec:
Alors probablement que vous faites quelque chose de mal @RocíoGarcíaLuque, comme Jonas solution et la mienne sont équivalentes selon ma compréhension de la stackoverflow.com/a/50558264/2832398
Vous avez entièrement raison. Je ne me souviens pas de la situation, mais probablement que oui, je faisais quelque chose de mal. Votre solution est parfaitement valide :+1:
OriginalL'auteur lilezek
const newObj = Object.assign({selected: false}, data);
OriginalL'auteur Omar