data ist ein ReactJS-Zustandswert (kommt von this.state.data beim Aufruf der Funktion), aber das schien kein Problem zu sein newData ist eine neue Kopie von data Reihe…
Ich erhalte den folgenden Fehler:
TypeError: Cannot add property selected, object is not extensible
@Jonasw der Op missbraucht concat und map. Ich denke, Ihre Lösung sollte sie auch nicht missbrauchen.
– lilezek
21. August 2017 um 14:06 Uhr
Wird das zurückgegebene Objekt eine Kopie von data ? Ich werde die Rückgabe verwenden, um den ReactJS-Objektstatus festzulegen….
– Mendes
21. August 2017 um 23:27 Uhr
lilezek
Sie können nicht verlängern item mit selected -Eigenschaft, und Ihr Array ist nur eine flache Kopie.
Wenn Sie erweitern möchten, müssen Sie eine tiefe Kopie Ihres Arrays erstellen. Es kann reichen mit:
let newData = data.map((item) =>
Object.assign({}, item, {selected:false})
)
Ich sehe den gleichen Fehler beim Object.assign-Ansatz. Ich schaffe es, es mit @Jonas answer zu lösen.
– Rocío García Luque
10. September 2018 um 11:01 Uhr
Dann machst du wahrscheinlich etwas falsch @RocíoGarcíaLuque, da die Lösung von Jonas und meine nach meinem Verständnis von stackoverflow.com/a/50558264/2832398 gleichwertig sind
– lilezek
29. Dezember 2018 um 20:16 Uhr
Du hast vollkommen Recht. Ich kann mich nicht an die Situation erinnern, aber wahrscheinlich ja, ich habe etwas falsch gemacht. Ihre Lösung ist vollkommen gültig :+1:
– Rocío García Luque
30. Dezember 2018 um 9:55 Uhr
Arul Ganapathy M
data = JSON.parse(JSON.stringify(data));
Das scheint eine unnötige “Stringifizierung” zu sein. Es könnten sich auch Gegenstände darin befinden data die nicht stringifiziert werden konnten und somit die Originaldaten zerstören.
– Esben Damgaard
11. Dezember 2020 um 10:06 Uhr
Für mein “nicht schiebbares” Array war dies perfekt
– Poopy Doop
24. Juni 2021 um 9:23 Uhr
Sie können sich auf lodash.deepClone(data) verlassen, um den Verlust verschachtelter Daten zu vermeiden
Um diesen Fehler wirklich zu verstehen, das hier developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… könnte helfen.
– Elmar Zander
21. August 2020 um 9:18 Uhr