#このチュートリアルの動作環境: Windows7 システム、vue3 バージョン、DELL G3 コンピューター。Vue の条件付きレンダリング命令には、v-if、v-else、v-else-if、および v-show が含まれます。 v-if ディレクティブは、コンテンツの一部を条件付きでレンダリングするために使用されます。このコンテンツは、ディレクティブの式が true 値を返した場合にのみレンダリングされます。v-else は、v-if、v-else に「else ブロック」を追加できます。 -if は v-if に「else if ブロック」を追加できます。 v-show は、コントロールの表示属性に応じて、条件に基づいて要素またはコンポーネントを表示するかどうかを決定します。
#条件付きレンダリング
#場合によっては、現在の設定に基づいて特定の要素またはコンポーネントをレンダリングするかどうかを決定する必要があります。現時点では、条件判断を行う必要があります。これらのコンテンツは、条件が true の場合にのみレンダリングされます;
##v-if レンダリング原則:
前述のとおり
v-if<!-- template --> <div> <h1>v-if的值为true时,显示这个div元素</h1> </div> // JavaScript var app = new Vue({ el: '#app', data: { } })
この時点で、
要素が 要素に挿入され、次のように表示されます:
Vue で、要素がレンダリングされるかどうかを判断する必要がある場合は、要素に
v-if
ディレクティブを追加し、その値を
true# に設定します。 ## または
。たとえば、上の例では true
を設定し、要素がレンダリングされます。上記のtrue 値を
false に変更すると、
要素は表示されません。
v-if に
true または
false を直接設定するほか、式で判定することもできます。例:
<!-- template --> <div> <h1> v-if的值为true时,显示这个div元素 </h1> </div> // JavaScript var app = new Vue({ el: '#app', data: { isShow: true } })
isShow の値が
true として宣言され、
h1 要素で次のように宣言されています。
v-if
isShow を渡します。実際、これは
v-if="true" に似ています。
h1 要素も通常どおりレンダリングされます。
isShow
を
false
に設定すると、
要素はレンダリングされません。
上では 1 つの要素をレンダリングしていますが、複数の要素をレンダリングしたい場合は、内部に複数の要素を直接ネストする必要がありますか?私たちの考えを検証してみましょう:
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><!-- template -->
<div>
<div>
<h1>我是标题</h1>
<p>我是段落</p>
</div>
</div></pre><div class="contentsignin">ログイン後にコピー</div></div>
要素を使用し、
v-if# を使用します。 ## その上で。最終的なレンダリング結果には、<template></template>
要素は含まれません。以下に示すように:<template> <h1>标题</h1> <p>段落 1</p> <p>段落 2</p> </template>
v-else
和JavaScript中的else
类似,但其要和v-if
配合使用。比如我们做登录,如果登录了显示一个欢迎语,反则提示用户去登录。那么我们可以设置一个isLogined
表达式,比如:
<!-- Template --> <div> <h1>欢迎来到W3cplus!(^_^)</h1> <h1>请先登录,再来!(^_^)</h1> </div> // JavaScript var app = new Vue({ el: '#app', data: { isLogined: true } })
如你所想,你在浏览器能看到下图的效果:
把isLogined
的值换成false
,那么渲染出来的内容就变了:
在实际项目中,当我们一个组件在两种状态渲染的效果不一样的时候,这个时候使用v-if
和v-else
配合<template></template>
就很好实现了。比如中奖和未中奖:
<template> <figure> <figcaption>恭喜你中了5元红包</figcaption> <img alt="vue の条件付きレンダリングには何が含まれますか?" > </figure> </template> <template> <figure> <figcaption>亲,就差那么一点点</figcaption> <img alt="vue の条件付きレンダリングには何が含まれますか?" > </figure> </template>
v-else-if
和JavaScript中的else if
类似,需要和v-if
配合在一起使用。当有几个条件同时在的时候,根据运算结果决定显示与否。如下面的代码,根据type
的值决定显示哪一个区块。比如,我们的例子,设定的type
的值B
,那么就会显示区块B
:
<!-- template --> <div> <div>显示A区域</div> <div>显示B区域</div> <div>显示C区域</div> </div> // JavaScript var app = new Vue({ el: '#app', data: { type: "B" } })
如果修改type
的值,将显示的区域会不一样:
v-show
和v-if
功能有点相似,其中v-if
依赖于控制DOM节点,而v-show
是依赖于控制DOM节点的display
属性。当v-show
传入的值为true
时,对应DOM元素的display
的值为block
之类的,反之为false
时,display
的值为none
。也就是用户看不到元素的显示,但其DOM元素还是存在的。
<!-- Template --> <div> <h1>我是一个标题</h1> <p>我是一个段落</p> </div> // JavaScript var app = new Vue({ el: '#app', data: { isShow: false } })
在浏览器看到的效果将是这样的:
注意,
v-show
不支持<template></template>
语法,也不支持v-else
。
以上がvue の条件付きレンダリングには何が含まれますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。