Warum sind Objekteigenschaften in meinem JavaScript-Code (Vue) als schreibgeschützt markiert?
P粉464208937
P粉464208937 2023-08-26 22:18:27
0
1
467

Ich habe eine Vue 2-Anwendung, die eine Statusvariable (ein Array mit Box-Objekten) namens boxes hat. Ich habe eine berechnete Eigenschaft, die eine Teilmenge dieser Boxen extrahiert (nearest_box_linked_boxes).

Ich habe eine Methode, die die von nearest_box_linked_boxes zurückgegebenen Boxen durchläuft und den Wert eines Attributs für jedes Element ändert:

for(let i=0;i 

Diese Methode hat einen Fehler zurückgegeben:

vue.esm.js:648 [Vue-Warnung]: Fehler im v-on-Handler: "TypeError: Die schreibgeschützte Eigenschaft „object_class“ von kann nicht zugewiesen werden Objekt '#'"

Ich habe nie explizit Boxobjekte (oder deren Eigenschaften) schreibgeschützt gemacht. Ich weiß, dass ich nicht in nearest_box_linked_boxes (das übergeordnete Array-Objekt) schreiben kann, da es sich um eine berechnete Eigenschaft handelt, aber ich denke, es sollte möglich sein, die Eigenschaften jedes Elements in diesem Array zu ändern.

Habe ich ein Problem, das durch Vue und berechnete Eigenschaften verursacht wird, oder liegt es an etwas anderem?

P粉464208937
P粉464208937

Antworte allen (1)
P粉754477325

您应该始终将计算属性视为“只读”,例外情况是计算属性的setter。

虽然在技术上可以修改由计算属性返回的对象,但这通常是一个坏主意。一旦依赖关系发生变化,该对象将被替换,您的更改将丢失。

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!