Vue.js, computedは1または2回実行するのか?
はじめに
TLを眺めていたら次の書き込みがあった。
https://twitter.com/mpyw/status/1251517636984352768
ここのところVue.jsを触れていなかったので復習のつもりで確認した。
動作環境
- Web Browser
- Google Chrome
- 81.0.4044.113(Official Build)(64bit)
- Google Chrome
開発環境
- Editor
- Visual Studio Code
- 1.44.1
- Visual Studio Code
- Vue.js
- Version 2.6.11
console.log(Vue.version);
で確認した
- Version 2.6.11
結論
結論から書くとcomputedは1回実行した。
ソースコード全文
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Hello, computed!</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <div id="app"> <div>{{ foo }}</div> <div>{{ bar }}</div> <div>{{ fooAndBar }}</div> <div> <button v-on:click="Test">押してね!</button> </div> </div> <script> console.log(Vue.version); var app = new Vue({ el: '#app', data: { foo : 1, bar : 1 }, computed : { fooAndBar : function() { console.log("computed"); return this.foo + this.bar; } }, methods : { Test : function() { this.foo = 2; // fooAndBarで利用しているプロパティを変更 this.bar = 3; // 〃 } }, watch : { foo : function(newValue, oldValue) { console.log(`new : ${newValue}, old : ${oldValue}`) }, bar : function(newValue, oldValue) { console.log(`new : ${newValue}, old : ${oldValue}`) } } }); </script> </body> </html>
所感
v-on:click
やmethods
の存在を忘れていた・・・。
編集していて思い出した。watch
はおまけ。
触れていないと忘れてしまう。