Pourquoi les propriétés des objets sont-elles marquées en lecture seule dans mon code JavaScript (Vue) ?
P粉464208937
P粉464208937 2023-08-26 22:18:27
0
1
562
<p>J'ai une application Vue 2 qui a une variable d'état (un tableau contenant des objets boîte) appelée <code>boxes</code>. J'ai une propriété calculée qui extrait un sous-ensemble de ces boîtes (<code>nearest_box_linked_boxes</code>). </p> <p>J'ai une méthode qui parcourt les cases renvoyées par <code>nearest_box_linked_boxes</code> et modifie la valeur d'un attribut sur chaque élément : </p> <pre class="brush:php;toolbar:false;">for(let i=0;i<this.nearest_box_linked_boxes.length;i++) { let box = this.nearest_box_linked_boxes[i]; box.object_class = this.$store.state.selected_object_class; boîte.patch(); }</pré> <p>Cette méthode a renvoyé une erreur : </p> <pre class="brush:php;toolbar:false;">vue.esm.js:648 [Vue warn] : Erreur dans le gestionnaire v-on : "TypeError : Impossible d'attribuer à la propriété en lecture seule 'object_class' de objet '#<Box>'"</pre> <p>Je n'ai jamais explicitement créé d'objets boîte (ou leurs propriétés) en lecture seule. Je sais que je ne peux pas écrire dans <code>nearest_box_linked_boxes</code> (l'objet du tableau parent) car il s'agit d'une propriété calculée, mais je pense qu'il devrait être possible de modifier les propriétés de chaque élément de ce tableau. </p> <p>Est-ce que je rencontre un problème causé par Vue et les propriétés calculées, ou s'agit-il d'autre chose ? </p>
P粉464208937
P粉464208937

répondre à tous(1)
P粉754477325

Vous devez toujours traiter les propriétés calculées en "lecture seule", à l'exception du setter de la propriété calculée.

Bien qu'il soit techniquement possible de modifier l'objet renvoyé par une propriété calculée, c'est généralement une mauvaise idée. Une fois les dépendances modifiées, l'objet sera remplacé et vos modifications seront perdues.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal