1. 程式人生 > >vue踩坑之this.$nextTick()

vue踩坑之this.$nextTick()

比如你想讓一個dom元素顯示,然後下一步去獲取這個元素的offsetWidth,最後你獲取到的會是0。

因為你改變資料,把show變成true,元素並不會立即顯示,理所當然也不會獲取到動態寬度。

正確的做法是先把元素show出來,在$nextTick去執行獲取寬度的操作,不知道這樣說會不會好理解一點。

openSubmenu() {
      this.show = true
      //獲取不到寬度
      this.$nextTick(() => 
       //這裡才可以
        let w = this.$refs.submenu.offsetWidth;
      })
    }