让我们说我有以下三种: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(状态,项目)实现或如何传递项目标识的方式 –