v-onceの使い方
初回だけテキストバインディングを行いたいときに使う。つまり、二回目以降の表示では、静的コンテンツとして扱うようにするためのディレクティブ。
どんな時に
要素が変わらないことが分かり切っている場合。APIでデータを取ってくるとき、そのデータが不変だとわかっているなら、静的コンテンツにしてもいいだろうということ。
メリット
ページ更新時のパフォーマンスが向上する。画面ロードのたびに更新とかしなくて済むから。
実装してみた
開発は、Visual Studio Codeを使った。
- index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<p v-once>{{ message }}</p>
<p>{{ message }}</p>
<input type="text" v-model="message">
</div>
<script src="https://unpkg.com/vue@3.1.5"></script>
<script src="js/main.js"></script>
</body>
</html>
- js/main.js
const app = Vue.createApp({
data: function() {
return {
message: 'Hello World!'
}
}
})
app.mount('#app')
ブラウザで開いてみる

テキストボックスの文字列は、v-modelでdataの値とデータバインドされている。
テキストボックスの値を変更してみる。

最初の<p>タグには、v-onceディレクティブが入っているため、更新がされなくなっている。
ページ表示の速度が遅いなあと感じたら使ってみようかな。



