【发布时间】:2023-03-29 02:04:01
【问题描述】:
我的组件数量取决于数组数量,所以当我向数组添加新项目时,它应该创建新组件。
当创建新组件时,我想获得它的参考,这就是我误解的地方。最后添加的组件是undefined,当我尝试获取它时。
但是,如果我试图在一段时间后获得它的参考,它会起作用。我想这是因为异步,但我不确定。
为什么会发生这种情况,是否有办法避免使用setTimeout?
<div id="app">
<button @click="addNewComp">add new component</button>
<new-comp
v-for="compId in arr"
:ref="`components`"
:index="compId"
></new-comp>
</div>
<script type="text/x-template " id="compTemplate">
<h1> I am a component {{index}}</h1>
</script>
Vue.component("newComp",{
template:"#compTemplate",
props:['index']
})
new Vue({
el:"#app",
data:{
arr:[1,2,3,4]
},
methods:{
addNewComp:function(){
let arr = this.arr;
let components = this.$refs.components;
arr.push(arr.length+1);
console.log("sync",components.length);
console.log("sync",components[components.length-1])
setTimeout(() => {
console.log("async",components.length);
console.log("async",components[components.length-1])
}, 1);
}
}
})
【问题讨论】:
-
我不确定您的问题是什么,但也许您正在寻找
updated生命周期? -
@A.Lau 是的,这有帮助,谢谢
标签: javascript vue.js