Vue.component('grandchild', {
template: '<div>grandchild - {{ data2.value }}</div>',
props: [ 'data2' ]
});
Vue.component('child', {
template: '<div>child - {{ data1.id }}<grandchild v-bind:data2="data2"></grandchild></div>',
props: [ 'data1' ],
data () {
return {
data2: {
value: this.data1.id
}
};
}
});
let v = new Vue({
el: '#div',
data: {
data1: {
id: 3
}
}
});
setInterval(function () {
v.data1.id++;
}, 1000);
v передает данные '1 ребенку через реквизит,
ребенок передает "данные2" внуку через реквизит, data2.value = data1.id
См. Функцию setInterval, она увеличивает data1.id каждую секунду
Но только обновление дочернего домика
jsFiddle: https://jsfiddle.net/xfgzwjef/1/
Кто-то может помочь?
Данные, рассчитанные из начального значения prop в дочернем компоненте, фактически не обновляются, так как ничего не меняют. Он отделяется от опоры при создании.
То, что вы хотите, - это вычисление data2
, поэтому оно фактически зависит от пропущенного ранее.
computed: {
data2() {
return {value: this.data1.id}
}
}