讓我們說我有以下三種:Vue.js + Vuex:如何改變嵌套的項目狀態?
[
{
name: 'asd',
is_whatever: true,
children: [
{
name: 'asd',
is_whatever: false,
children: [],
},
],
},
],
樹下鍵「樹」通過Vuex存儲在模塊中,並循環通過與以下稱爲「遞歸項目」遞歸成分:
<li class="recursive-item" v-for="item in tree">
{{ item.name }}
<div v-if="item.is_whatever">on</div>
<div v-else>off</div>
<ul v-if="tree.children.length">
<recursive-item :tree="item.children"></recursive-item>
</ul>
</li>
現在我想切換項目的財產「is_whatever」,所以我附上一個監聽
<div v-if="item.is_whatever"
@click="item.is_whatever = !item.is_whatever">on</div>
<div v-else>off</div>
當我點擊它,它的工作原理,但發出以下
"Error: [vuex] Do not mutate vuex store state outside mutation handlers."
[vuex] Do not mutate vuex store state outside mutation handlers.
我該如何在沒有這個錯誤的情況下實現它?我無法看到如何派發一個動作或將事件發送到樹的頂端,因爲它是嵌套的和遞歸的,所以我沒有獲得特定項目的路徑,對吧?
這就是發出警告的原因,但我意識到了這一點(請參見最後一段)。問題是數據有一個樹形結構,我不知道如何通過一個動作或一個提交切換特定的項目...所以,你是對的,但回答不同的問題 - 我對findItemInState(狀態,項目)實現或如何傳遞項目標識的方式 –