Sifat tugas dalam Vue.js berubah secara tidak dijangka dalam apl senarai tugasan
P粉966979765
2023-08-26 12:04:57
<p>Saya mempunyai kedai yang mengandungi keadaan, perubahan, pengambil, dsb. Status mengandungi senarai tugasan berikut. </p>
<pre class="brush:php;toolbar:false;">const state = {
tugasan:[{
tajuk: "Bangun",
selesai: palsu
},
{
tajuk: "Projek 2",
selesai: palsu
},
]
}</pre>
<p><code>Todo.vue</code></p>
<pre class="brush:php;toolbar:false;"><template>
<Tugas v-untuk="(tugas,kunci) dalam tugas" :id="kunci"
</template>
<skrip>
import { defineComponent } daripada 'vue';
import Task daripada '../components/Task.vue'
import {mapGetters} daripada 'vuex'
eksport lalai defineComponent({
nama: 'PageIndex',
komponen:{
Tugasan
},
dikira:{
...mapGetters('tugas', ['tugas']) //Dapatkan tugasan daripada modul tugas
},
})
</script></pre>
<p><code>task.vue</code></p>
<pre class="brush:php;toolbar:false;"><template>
<q-item
boleh diklik
:class="!task.completed ? 'bg-oren-1' : 'bg-green-1'"
v-riak>
<bahagian atas bahagian q-item>
<q-checkbox v-model="task.completed" /////////////// Masalahnya terletak pada baris ini
</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>
<skrip>
import {mapActions} daripada 'vuex'
eksport lalai {
prop: ["tugas"],
}
</script></pre>
<p>Dalam kod di atas, dalam Task.vue</p>
<pre class="brush:php;toolbar:false;"><q-checkbox v-model="task.completed"
<p>Masalahnya ada di baris ini. Jika saya mengalih keluar <code>v-model="task.completed"</code> daripada kod yang diberikan di atas maka semuanya berfungsi dengan baik jika tidak, ia akan menimbulkan ralat dengan mesej <code>Mutasi "task" prop< /kod></p>
Masalahnya ialah anda cuba menukar prop dan keadaan vuex yang sepadan di luar mutasi. Apabila menghantar nilai kepada nilai
v-model
指令将创建一个双向数据绑定。你的task
prop引用了状态中的一个对象,当q-checkbox
改变task.completed
, objek dikemas kini secara langsung dalam keadaan. Sebaliknya, anda harus membuat mutasi yang mengemas kini tugas anda:Kemudian anda boleh menggunakan mutasi ini dalam templat anda
Juga ambil perhatian bahawa
q-checkbox
nama prop dan acara sebenar bagi komponen mungkin berbeza bergantung pada cara anda melaksanakannya