【发布时间】:2019-09-14 15:25:47
【问题描述】:
第一次接触 VueJs 昨天,现在我被卡住了..
我有一个父组件,其中包含子项,其中也有一个子项(我称它们为孙子项)。当我单击父级中的按钮时,我想从所有孙子中获取数据,但我不知道如何。
在我看来,我想从父级向所有孙辈调用一个事件,他们应该将数据存储到 vuex 存储中。这有可能以某种方式还是有其他方法可以做到这一点?
// Data
blocks = [
{
id: 1,
type: 'HeadingBlock',
title: 'Hello',
color: 'blue'
},
{
id: 2,
type: 'ImageBlock',
image_id: 2
}
];
// App.js
<ContentBlocks :blocks="blocks" / >
// ContentBlock.vue
<ContentBlockItem v-for="(block, index) in blocks" :component="block.type" ... />
// ContentBlockItem.vue
<component :is="component" :block="block" /> // Grandchild
// component aka the grandchild (eg. HeadingBlock.vue)
data() {
return {
title: 'Hello - I want save the changed data for this heading',
color: 'blue'
}
}
因此,唯一的号召性用语是通过“保存”按钮在父级中进行的。而且我希望孙辈的逻辑尽可能少(以便于创建新的逻辑,例如“ParagraphBlock”)。
提前谢谢
【问题讨论】:
-
好吧,在这种情况下,您可以调用一个动作来存储和执行您的任务,并与所有组件(父+子+孙子)共享状态。
-
我建议你阅读 vuex。 Vuex 专为解决此类问题而设计。
标签: javascript vue.js vuex