Vue3 v-text ディレクティブ
v-textディレクティブは要素のテキストコンテンツを更新するために使用され、DOM要素のtextContentプロパティを設定することに相当します。
基本説明
v-textディレクティブは、バインドした式の値を要素のテキストコンテンツに設定します。これはVueテンプレートで最もよく使われるテキスト補間{{ }}のもう一つの書き方です。
- 期待される型: string
- 機能要素のテキストコンテンツを更新し、textContent プロパティを設定することに相当します。
基本的な使い方
実例
<span v-text="message"></span>
<!-- 以下と同等 -->
<span>{{ message }}</span>
<!-- 以下と同等 -->
<span>{{ message }}</span>
実例
<template>
<div>
<p v-text="greeting"></p>
<p>波括弧を使用:{{ greeting }}</p>
</div>
</template>
<script>
export default {
data() {
return {
greeting: 'Hello Vue!'
}
}
}
</script>
<div>
<p v-text="greeting"></p>
<p>波括弧を使用:{{ greeting }}</p>
</div>
</template>
<script>
export default {
data() {
return {
greeting: 'Hello Vue!'
}
}
}
</script>
v-text と波括弧の違い
v-textと{{ }}波括弧補間の主な違いは次のとおりです。
{{ }}テキストノードと属性で使用できます。v-text要素のテキストコンテンツにのみ使用できます。v-text要素内の既存のテキストコンテンツを上書きします。
実例
<!-- v-text は「既存テキスト」を上書きし、message の値だけを表示します -->
<span v-text="message">既存テキストは上書きされます。</span>
<!-- 波括弧は要素内の他のコンテンツを保持できます -->
<span>接頭辞 {{ message }} 接尾辞</span>
<span v-text="message">既存テキストは上書きされます。</span>
<!-- 波括弧は要素内の他のコンテンツを保持できます -->
<span>接頭辞 {{ message }} 接尾辞</span>
使用シーン
1、シンプルなテキストバインド
テキストだけを表示し、他のコンテンツを混ぜる必要がない場合、v-text は明確な選択肢です:
実例
<template>
<div>
<h1 v-text="pageTitle"></h1>
<span v-text="userName"></span>
</div>
</template>
<script>
export default {
data() {
return {
pageTitle: 'ユーザーセンター',
userName: '張三'
}
}
}
</script>
<div>
<h1 v-text="pageTitle"></h1>
<span v-text="userName"></span>
</div>
</template>
<script>
export default {
data() {
return {
pageTitle: 'ユーザーセンター',
userName: '張三'
}
}
}
</script>
2、v-once との組み合わせ
v-text は v-once と組み合わせて使用でき、一度だけレンダリングされ、その後は更新されません:
実例
<template>
<div>
<!-- 一度だけレンダリングされ、以降の data 変更では更新されません -->
<p v-once v-text="staticText"></p>
<!-- データの変更に反応します -->
<p v-text="dynamicText"></p>
<button @click="updateText">テキストを更新</button>
</div>
</template>
<script>
export default {
data() {
return {
staticText: '静的テキスト、一度だけレンダリング',
dynamicText: '動的テキスト、更新されます'
}
},
methods: {
updateText() {
this.dynamicText = 'テキストが更新されました:' + new Date().toLocaleTimeString()
}
}
}
</script>
<div>
<!-- 一度だけレンダリングされ、以降の data 変更では更新されません -->
<p v-once v-text="staticText"></p>
<!-- データの変更に反応します -->
<p v-text="dynamicText"></p>
<button @click="updateText">テキストを更新</button>
</div>
</template>
<script>
export default {
data() {
return {
staticText: '静的テキスト、一度だけレンダリング',
dynamicText: '動的テキスト、更新されます'
}
},
methods: {
updateText() {
this.dynamicText = 'テキストが更新されました:' + new Date().toLocaleTimeString()
}
}
}
</script>
注意事項
既存コンテンツの上書き:v-text は要素内のすべてのテキストコンテンツを完全に上書きします。一部のテキストだけを更新する必要がある場合は、波括弧補間を使用してください。
{{ }}。
HTMLエスケープ:v-text はコンテンツをプレーンテキストとして扱い、HTMLタグを解析しません。HTMLをレンダリングする必要がある場合は、v-html ディレクティブを使用してください。
実例
<!-- <b>太字</b> というテキストを表示し、太字にはしません -->
<span v-text="'<b>太字</b>'"></span>
<!-- HTMLをレンダリングする必要がある場合は、v-html を使用 -->
<span v-html="'<b>太字</b>'"></span>
<span v-text="'<b>太字</b>'"></span>
<!-- HTMLをレンダリングする必要がある場合は、v-html を使用 -->
<span v-html="'<b>太字</b>'"></span>
その他の拡張
Vue3 組み込みディレクティブ