watchPostEffect() コンポーネント更新後に実行される副作用

最終更新:2026-10-22

watchPostEffect() コンポーネント更新後に実行される副作用

watchPostEffect() は watchEffect に flush: 'post' を付けたものと同等です。コンポーネントの DOM 更新後に実行されるため、更新後の DOM の計測に最適です。

グループリアクティビティ: 基本
種類API
スコープコンポーネント内
Vue バージョン3.0+
SSR 対応対応

📝 構文

watchPostEffect(() => {
  console.log(el.value.offsetHeight)  // DOM は更新済み
})

⚙️ 引数

effect副作用関数。オプションは watchEffect と同じ(flush は除く)

戻り値:監視を停止する関数 stop()

▶ 例

以下のコードを編集して結果を確認しましょう:

出力:

Shows the paragraph height; it follows font-size changes.

💡 ポイント

💡 ヒント デフォルトの watchEffect は DOM 更新前に実行されるため、offsetHeight などのレイアウト情報を読むと古い値になります。それを解決するための API がこれです。
ℹ️ 補足 watchEffect に { flush: 'post' } を付けても完全に同じ動作になります。
⚠️ 注意 DOM 参照に依存する場合は、ref がマウント済みかを確認してください(初回は null の可能性があります)。
関連ケースは近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q watchEffect との違いを一言で言うと?
A 実行タイミングです。watchEffect は DOM 更新前、watchPostEffect は DOM 更新後に実行されます。
Q どんなときに必要になりますか?
A レンダリング後に要素のサイズ、スクロール位置、フォーカスなど、最新の DOM に依存する値を読みたいときです。
Q nextTick で代用できますか?
A 1 回きりの読み取りなら await nextTick() で十分です。変化に継続的に追従したい場合は watchPostEffect を使いましょう。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%