比如你想让一个dom元素显示,然后下一步去获取这个元素的offsetWidth,最后你获取到的会是0。
因为你改变数据,把show变成true,元素并不会立即显示,理所当然也不会获取到动态宽度。
正确的做法是先把元素show出来,在$nextTick去执行获取宽度的操作,不知道这样说会不会好理解一点。
openSubmenu() {
this.show = true
//获取不到宽度
this.$nextTick(() =>
//这里才可以
let w = this.$refs.submenu.offsetWidth;
})
}