A Tiny Stream

英語学習とプログラミングのことをメインに、細々と書き残します

【Vue.js】transitionコンポーネントの中の要素にアクセスする

transitionコンポーネントが表示される前に、 中のDOMの高さを取得したりしようとして詰まったのでメモ

v-on:enter イベントリスナーを使う

<p @click="showElem">表示ボタン</p>
<transition v-on:enter="getElem">
  <div v-show="isShow" id="hoge">中の要素</div>
</transition>

/* script */
data () {
  return {
      isShow: false
  }
},
methods: {
  showElem: function() {
    this.isShow = true;
    var h = document.getElementById('hoge').clientHeight;
    console.log(h); // 0 取得できない
  },
  getElem: function() {
    var h = document.getElementById('hoge').clientHeight;
    console.log(h); // 50 取得できる
  }
},

表示アニメーションが発生する前に高さを取得しようとして失敗したみたいでした。

v-on:enter 以外のイベントリスナー
イベント タイミング
before-enter 要素の挿入前
enter 挿入されてアニメーションされる前
after-enter 挿入アニメーション後
enter-cancelled 挿入キャンセル時
before-leave 削除アニメーション実行前
leave 削除アニメーション実行前で、before-leaveの後
after-leave 要素の削除後
leave-cancelled 削除キャンセル時