cari

Rumah  >  Soal Jawab  >  teks badan

Sifat tugas dalam Vue.js berubah secara tidak dijangka dalam apl senarai tugasan

<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>
P粉966979765P粉966979765513 hari yang lalu473

membalas semua(1)saya akan balas

  • P粉057869348

    P粉0578693482023-08-27 09:34:46

    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:

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

    Kemudian anda boleh menggunakan mutasi ini dalam templat anda

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

    Juga ambil perhatian bahawa q-checkbox nama prop dan acara sebenar bagi komponen mungkin berbeza bergantung pada cara anda melaksanakannya

    balas
    0
  • Batalbalas