Я попытался предоставить свои данные из родительского элемента, как показано ниже.
data(){
return{
allData:null,
ingCollection:null,
selectedDish:[]
}
},
mounted(){
Promise.all([
d3.json('data.json'),
d3.json('ingredientsonly.json')
]).then((data)=>{
this.allData=data[0];
this.ingCollection=data[1];
})
},
components:{sidePanel,centerPiece},
methods: {
// receiveIngredients(selected){
// let selections = this.allData.filter(d=>{
// d.ingredients.includes(selected)
// });
// }
},
provide() {
return{
allData:this.allData,
ingCollection:this.ingCollection,
selectedDish:this.selectedDish,
receiveIngredients:this.receiveIngredients
}
}
Однако после того, как смонтированный крючок жизненного цикла был запущен, данные обновляются, а элементы предоставления не обновлялись.
Почему это?
Спасибо





provide() вызывается только один раз при инициализации, а не при изменении ссылок внутри.
Вместо этого вы можете provide объект (например, с именем root), а затем обновить свойство этого объекта в mounted():
export default {
provide() {
return {
root: {
allData: null,
ingCollection: null,
}
}
},
mounted() {
Promise.all([
d3.json('data.json'),
d3.json('ingredientsonly.json')
]).then((data)=>{
this.root.allData = data[0];
this.root.ingCollection = data[1];
})
}
}
Что вы имеете в виду под словом «не работает»?
после того, как я изменил this.root.allData, данные отражают изменение, показывая обновленные данные, но предоставляют значение, оставшееся таким же, как и раньше, «пустой массив»
Можете ли вы создать репродукцию в codeandbox, чтобы помочь в устранении неполадок?
Привет, я столкнулся со странным поведением: когда я вставляю данные в смонтированные, он работает, пока я меняю данные, он не работает. Вы случайно не знаете почему?