Frontend Academy · レッスン

ディレクティブ:v-if・v-for・v-bind・v-on

v-if と v-show で条件付きレンダリングを行い、v-for でループし、v-bind で属性を動的にバインドし、v-on で DOM イベントを監視します。

レッスン 3/413 ステップ

「ディレクティブ:v-if・v-for・v-bind・v-on」はCoddyKit上の無料Frontend Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFrontend Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Frontend Academyコースには全4レッスンが含まれています。

Vueディレクティブとは

ディレクティブはv-で始まる特別な属性で、DOM要素に何をするかをVueに指示します。ディレクティブはJavaScriptの式として評価され、リアクティブなデータの変更に応じて反応します。

v-if、v-else-if、v-else

v-ifは、truthyな式に基づいて要素を条件付きでレンダリングします。式がfalseの場合、要素はDOMから完全に削除されます。v-elseは代替の表示を指定します。

<div v-if="isLoggedIn">
  <UserDashboard />
</div>
<div v-else-if="isLoading">
  <Spinner />
</div>
<div v-else>
  <LoginForm />
</div>

v-show — 表示の切り替え

v-showはDOMに要素を追加・削除する代わりに、CSSのdisplay: noneを切り替えます。要素の表示が頻繁に切り替わる場合はv-showを使用し、条件がほとんど変化しない場合はv-ifを使用します。

<!-- Good for frequently toggling: -->
<div v-show="isDropdownOpen">...</div>

<!-- Good for rarely changing: -->
<div v-if="userHasPremium">...</div>

v-for — リストのレンダリング

v-for="item in items"は、各itemに対して要素をレンダリングします。更新を安定させるため、必ず:keyを指定してください。

<ul>
  <li v-for="user in users" :key="user.id">
    {{ user.name }} — {{ user.email }}
  </li>
</ul>

<!-- With index: -->
<li v-for="(item, index) in items" :key="item.id">
  {{ index + 1 }}. {{ item.title }}
</li>

オブジェクトに対するv-for

オブジェクトの値、またはキーと値のペアを反復処理します。

<dl>
  <template v-for="(value, key) in user" :key="key">
    <dt>{{ key }}</dt>
    <dd>{{ value }}</dd>
  </template>
</dl>

v-bind — 属性のバインディング

v-bind:attrまたは省略記法の:attrを使用すると、HTML属性をリアクティブな値に動的にバインドできます。

<img :src="user.avatar" :alt="user.name">
<a :href="getLink(post.id)">{{ post.title }}</a>
<button :disabled="isLoading" :class="{ active: isActive }">Save</button>

v-bindのオブジェクト構文

オブジェクトを使用すると、複数の属性を一度にバインドできます。

<input v-bind="{
  type: 'email',
  placeholder: 'Enter email',
  disabled: isSubmitting
}">

クラスのバインディング: :class

オブジェクト(キー = クラス名、値 = 条件)または配列を使用して、CSSクラスを条件付きでバインドします。

<div :class="{ 'is-active': isActive, 'has-error': hasError }">...</div>

<!-- Array syntax: -->
<div :class="[baseClass, isActive ? 'active' : '']">

<!-- Dynamic in script setup: -->
:class="{ card: true, [variantClass]: true }"

スタイルのバインディング: :style

camelCaseのオブジェクトを使用して、インラインスタイルをバインドします。

<div :style="{ backgroundColor: brandColor, padding: spacing + 'px' }">

v-on — イベントのリッスン

v-on:eventまたは省略記法の@eventを使用して、イベントリスナーを設定します。

<button @click="handleClick">Click Me</button>
<input @input="value = $event.target.value">
<form @submit.prevent="handleSubmit">...</form>

イベント修飾子

Vueには組み込みのイベント修飾子があります。.prevent(preventDefault)、.stop(stopPropagation)、.once(1回だけ実行)、.self(対象が要素自体の場合のみ)、.passive(スクロールのパフォーマンスを向上)を使用できます。

<form @submit.prevent="submit">
<button @click.stop="selectItem">
<div @click.self="closeModal">
<div @scroll.passive="onScroll">

クイックチェック

v-ifではなくv-showを使用するのは、どのような場合ですか?

復習: Vueディレクティブ

v-ifはDOMから要素を削除または追加します。v-showは表示を切り替えます。v-forはリストをレンダリングします(必ず:keyを指定します)。v-bind(:)は属性、:class、:styleをバインドします。v-on(@)はイベントリスナーを設定します。イベント修飾子には.prevent、.stop、.onceがあります。v-modelは双方向バインディングに使用します(v-bind:valueとv-on:inputを組み合わせたものです)。

無料で開始

AI チューターと学ぶ HTML — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
41
レッスン
163

よくある質問

「ディレクティブ:v-if・v-for・v-bind・v-on」レッスンは無料ですか?

はい。「ディレクティブ:v-if・v-for・v-bind・v-on」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Frontend Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Frontend Academyコースには全4レッスンが含まれています。

「ディレクティブ:v-if・v-for・v-bind・v-on」で何を学びますか?

v-if と v-show で条件付きレンダリングを行い、v-for でループし、v-bind で属性を動的にバインドし、v-on で DOM イベントを監視します。 ブラウザで直接実行するハンズオンコードでFrontend Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Frontend Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのFrontend Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「ディレクティブ:v-if・v-for・v-bind・v-on」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このFrontend Academyレッスンでコードを書いて実行できますか?

はい。すべてのFrontend Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Vue SFC:script・template・style
  2. Options API:data・methods・computed
  3. ディレクティブ:v-if・v-for・v-bind・v-on
  4. コンポーネント Props と Emits
← Frontend Academyに戻る