如何从嵌套的 child 组件更改 parent 组件?

How to change parent component from nested child component?

情况是这样的。有一个object的数组叫table数据存储table行,现在存储在vuex

组件结构是这样的:

Parent(页面)-> child 1(table布局)-> child 2(table正文)-> child 3(行)

在child 3、tableData.

中有一个删除索引的删除函数

parent 需要更新其数据 (selectedRow),如果删除的行的 ID 是 selectedRow Id,该数据将被传递给另一个不相关的 child 组件。

目前我正在使用 watch 来观察 table 数据以对 parent 组件中的变化做出反应。但是,watch 函数总是会循环遍历 tableData 以查找每当 tableData 更新时 selectedRow 是否仍然存在,这在数组很大时是非常不可取的。

我想过使用 emit,但它必须经过 2 个组件才能到达 parent,这使得代码难以管理

我也想过坐公交车,但也不是什么好做法

任何人都可以就这个问题给我任何建议吗?

因为你已经在 vuex 中存储了 tableData...你可以使用 mutation

从您的 child2 组件中,您只需调用一个突变即可从 tableData 中删除特定索引

例如

this.$store.commit('removeIndex', payload) // where removeIndex is a mutation handler and payload is the index value sent as argument

您可以将选定的行存储在 vuex 中,然后在子 3 中更新您的 vuex 存储中的选定行