recherche

Maison  >  Questions et réponses  >  le corps du texte

Pourquoi les propriétés des objets sont-elles marquées en lecture seule dans mon code JavaScript (Vue) ?

<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粉464208937P粉464208937457 Il y a quelques jours552

répondre à tous(1)je répondrai

  • P粉754477325

    P粉7544773252023-08-27 09:49:53

    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.

    répondre
    0
  • Annulerrépondre