watch
の使い方watch()
を使ってデータの変更を監視します。@Watch
デコレーターと同じ役割を果たします。watch(
監視対象,
(newValue, oldValue) => {
// 変更時の処理
},
{ immediate: true, deep: true } // オプション(必要に応じて)
);
immediate: true
→ 初期化時にもコールバック実行deep: true
→ オブジェクトや配列の深い変更も検知childValue
の変更を監視// ファイル名: ParentComponent.vue
<script setup lang="ts">
//変数のリアクティブ管理のためrefをインポート
import { ref, watch } from 'vue';
//子コンポーネントをインポート
import ChildComponent from './ChildComponent.vue';
// v-model対象の値
const childValue = ref<string>('初期値');
// childValueが変わったらログ出力
watch(childValue, (newVal, oldVal) => {
console.log('childValue changed from', oldVal, 'to', newVal);
});
</script>
<template>
<div>
<p>子の値: {{ childValue }}</p>
<ChildComponent v-model="childValue" />
</div>
</template>
項目 | 内容 |
---|---|
ref で管理 |
基本的に ref でリアクティブ変数を作る |
watch 関数で監視 |
監視対象のref(またはgetter関数)を第一引数に渡す |
newVal, oldVal | コールバックの中で新旧の値を受け取れる |
Composition APIでは、watch(対象, コールバック)
で柔軟にリアクティブなデータ変更を検知できる!