我有一些数据要用v-for表示,我想得到每个元素的宽度。
在挂载中,我使用的是this.$refs.name.offsetWidth
,但是它一直是0,怎么办
mounted(){
ipcRenderer.on('getVuexMsg', (e, data) => {
this.barrageList.push(data)
setTimeout(()=>{
console.log(this.$refs.text[0].offsetWidth);
},2000)
})
}
<div class="textArea" ref="textArea">
<div class="text" v-for="(item,index) in barrageList" :key="index" ref="text">{{ item.content }}</div>
</div>
1条答案
按热度按时间cvxl0en21#
您没有提供太多信息,但可能存在这样的问题:您试图在元素加载到DOM之前访问它们。
你应该用
nextTick
。根据它的定义-如果你想捕捉DOM刚刚更新的时刻,那么你需要使用一个特殊的函数nextTick(callback),它在新的数据更新到达DOM之后立即执行callback。
这里有一个演示-