9cubed
ブログ | PHP | JavaScript | TypeScript | Vue.js | Laravel | Tailwind | Vite | Python | MariaDB | SQLite | Node.js | Linux | PowerShell | Docker | Git | Web | その他 | 将棋ウォーズ | 歌の練習
< 前の記事

v-model(双方向バインディング)

次の記事 >

watchDebounced(値の監視)

Vue.js

[Vue.js]watch(値の監視)

公開日:2026-02-24
更新日:2026-02-24

1. 概要

watch で値を監視して、変更があった場合に処理を実行します。

動作確認:Vite 7.3.1、Vue.js 3.5.25

2. サンプル1

2.1 コード

index.html と src/main.ts は、「Hello, World」で作成したものを使用します。

src/App.vue
コード
<script setup lang="ts">
import { ref, watch } from 'vue';

const count = ref(0);

watch(count, (newValue, oldValue) => {
  console.log(`old:${oldValue}  new:${newValue}`);
})
</script>

<template>
  {{ count }}<br />

  <button @click="count++">Count up</button>
</template>

実行結果

2.2 説明

count が変わると、watch() で指定した関数が実行されます。

3. サンプル2-複数

3.1 コード

src/App.vue
コード
<script setup lang="ts">
import { ref, watch } from 'vue';

const count1 = ref(0);
const count2 = ref(0);
const count3 = ref(0);

watch([count1, count2, count3], ([newValue1, newValue2, newValue3], [oldValue1, oldValue2, oldValue3]) => {
  console.log(`Value1 - old:${oldValue1}  new:${newValue1}`);
  console.log(`Value2 - old:${oldValue2}  new:${newValue2}`);
  console.log(`Value3 - old:${oldValue3}  new:${newValue3}`);
})
</script>

<template>
  {{ count1 }} {{ count2 }} {{ count3 }}<br />

  <button @click="count1++;">Count up 1</button>
  <button @click="count2++;">Count up 2</button>
  <button @click="count3++;">Count up 3</button>
</template>

実行結果

3.2 説明

watch で複数の ref を指定すると、指定した ref のうち 1 つでも変化があると、指定した関数が呼ばれます。
この時に呼ばれる関数の引数には、指定した ref の数だけ old と new が入ります。
また、今回変更された ref に対応する old と new には、今回の old と new の値が入っていますが、
変更されていない ref に対応する old と new には、前回の値が入っているので要注意です。
< 前の記事

v-model(双方向バインディング)

次の記事 >

watchDebounced(値の監視)

YouTube X

新着一覧

  • async、awaitJavaScript
  • Promise についてJavaScript
  • パッケージの管理Node.js
  • v-model(双方向バインディング)Vue.js
  • VS Code で GitHub を使ったソース管理Git
  • computed(再計算)Vue.js
  • watchDebounced(値の監視)Vue.js
  • watch(値の監視)Vue.js
  • change イベントVue.js
  • v-memoVue.js

アーカイブ

  • 2026/03
  • 2026/02
  • 2026/01
  • 2025/12
  • 2025/11
  • 2025/10
  • 2025/09
  • 2025/08
  • /00

以前のカテゴリー一覧

  • CakePHP3
  • CentOS7
  • HTML・CSS・JavaScript
  • Haskell
  • JavaScript
  • Kotlin
  • Laravel5
  • PHP
  • Python
  • Ruby
  • RubyOnRails5
  • TypeScript
  • Vue.js
  • Webサーバ講座
  • Webプログラミング講座
  • jQuery
  • linux
  • パソコン講座
  • ブログ
  • プログラミング講座
  • メモ帳作成講座
  • 数学

Copyright © 9cubed. All Rights Reserved.

プライバシーポリシー 利用規約
▲