Vue.js 3の学習メモ

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ディレクティブが入っているため、更新がされなくなっている。

ページ表示の速度が遅いなあと感じたら使ってみようかな。

投稿者: rajanoon

1993年生まれ。新卒からSEとして働いていましたが、今はサーバーサイドエンジニアとして働いています。一生使える技術を身に着けようと悪戦苦闘中です。

コメントを残す