Aufgabeneigenschaften in Vue.js wurden in der Aufgabenlisten-App unerwartet geändert
P粉966979765
P粉966979765 2023-08-26 12:04:57
0
1
435
<p>Ich habe einen Speicher, der Zustände, Änderungen, Getter usw. enthält. Der Status enthält die folgende Aufgabenliste. </p> <pre class="brush:php;toolbar:false;">const state = { Aufgaben:[{ Titel: „Steh auf“, abgeschlossen: falsch }, { Titel: „Projekt 2“, abgeschlossen: falsch }, ] }</pre> <p><code>Todo.vue</code></p> <pre class="brush:php;toolbar:false;"><template> <Aufgabe v-for="(Aufgabe, Schlüssel) in Aufgaben" :task="task" </template> <script> import { defineComponent } from 'vue'; Aufgabe aus „../components/Task.vue“ importieren {mapGetters} aus 'vuex' importieren Standard exportieren defineComponent({ Name: 'PageIndex', Komponenten:{ Aufgabe }, berechnet:{ ...mapGetters('task', ['tasks']) //Aufgaben aus dem Aufgabenmodul abrufen }, }) </script></pre> <p><code>task.vue</code></p> <pre class="brush:php;toolbar:false;"><template> <q-Item anklickbar :class="!task.completed ? 'bg-orange-1' : 'bg-green-1'" V-Welligkeit> <q-item-section side top> <q-checkbox v-model="task.completed" ////////////// Das Problem liegt in dieser Zeile </q-item-section> <q-item-section> <q-item-label :class="{'text-strikethrough' : task.completed}">{{task.name}}</q-item-label> </q-item-section> </q-item> </template> <script> {mapActions} aus 'vuex' importieren Standard exportieren { Requisiten: ["Aufgabe"], } </script></pre> <p>Im obigen Code in Task.vue</p> <pre class="brush:php;toolbar:false;"><q-checkbox v-model="task.completed" <p>Das Problem liegt in dieser Zeile. Wenn ich <code>v-model="task.completed"</code> aus dem oben angegebenen Code entferne, funktioniert alles einwandfrei, andernfalls wird ein Fehler mit der Meldung <code>Unerwartete Mutation von „task“ prop< ausgegeben. /code></p>
P粉966979765
P粉966979765

Antworte allen(1)
P粉057869348

问题是你试图在mutation之外改变一个prop和相应的vuex状态。将一个值传递给v-model指令将创建一个双向数据绑定。你的task prop引用了状态中的一个对象,当q-checkbox改变task.completed的值时,对象直接在状态中更新。相反,你应该创建一个mutation来更新你的任务:

export const mutations = {
  updateTask(state, payload){
    const task = state.tasks.find(t => t.id === payload.id);

    if(task) Object.assign(task, payload)
  }
}

然后你可以在模板中使用这个mutation

<q-checkbox :value="task.completed" @input="updateTask({id: task.id, completed: !task.completed})" />

还要注意,q-checkbox组件的实际prop和事件名称可能会有所不同,这取决于你的实现方式

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage