水曜日, 5月 14, 2025
ホームニューステックニュース【初心者向け】最初に覚えるべき2つのディレクティブ機能【Vue.js2】 #vue2 - Qiita

【初心者向け】最初に覚えるべき2つのディレクティブ機能【Vue.js2】 #vue2 – Qiita



【初心者向け】最初に覚えるべき2つのディレクティブ機能【Vue.js2】 #vue2 - Qiita

HTMLとCSSは書けるJavaScript初心者が、覚えたてのVue.jsの基本ディレクティブについて解説した記事です!
Vue.js興味あるけど何から覚えればいいの?という方の参考になればうれしいです。

Vue.jsとは

Vue.jsは、データの変更に応じて自動的にDOMを更新し、表示や動作を変えることができるJavaScriptフレームワークです。データを変更すると自動的にUIに反映され、DOMを操作する必要がほとんどありません。

そのため、HTMLテンプレート内で条件分岐や動的なコンテンツの制御が可能になります。

私のようなJavaScript初心者にとっては、馴染みのあるHTMLの書き方でプログラミングっぽいことができるので、取っつきやすいのではないかと思います!

最初に覚えるべき2つのディレクティブ機能

ディレクティブを使えば、HTML要素に特定の動作を追加することができます。
Vue.js初心者が最初に覚えるべき2つのディレクティブについて説明します。

1.条件によってコンテンツを出しわける(v-if)

条件によって要素の表示を切り替えたい、ということありませんか?
例えば、在庫の有無で表示を切り替えたいとか。
image.png

そんな時に、v-ifのディレクティブが使えます。

以下は商品の在庫の有無で、金額部分の表示を切り替える場合の記述例です。


id="sample">

v-if="stock === 0" class="price_outofstock">売り切れ

v-else class="price">{{price}}円

script> new Vue({ el: '#sample', data: { stock: 0, // 在庫数をここで設定 price: 2500 // 商品の価格をここで設定 } }); script>

上記では、ストックが0の場合(v-if="stock === 0")は売り切れ、それ以外(v-else)は金額を表示、という条件分岐を行っています。

scriptタグ内のpriceが更新されると、HTMLの{{price}}円も更新されます。

v-ifv-showの違い

v-ifの他にv-showという種類もあります。
どちらも表示・非表示を切り替えるディレクティブですが、条件に一致しない場合、v-ifの要素はそもそもDOMにレンダリングされないのに対し、v-showの要素はdisplay: noneで非表示になります。

はじめからDOMに存在することが前提の要素をv-ifで出しわけてしまうと不具合の元なので、そんなときはv-showを使うと安心です。

また、v-showだとtemplateタグが使えないので注意です。

2.属性を動的に変える(v-bind:)

この条件に合致するときだけここのスタイルを変えたい、ということありませんか?
例えば、必須項目がすべて入力されたときにボタンの色をグレーから緑に変えたいとか。

image.png

vue.jsなら、バインディング機能で動的にスタイルを変更できます。

v-bind:属性名=”条件式”

以下は条件によってdisabled属性をつけ、ボタンの色を動的に変える場合の記述例です。



id="app">

style> /* ボタンのスタイル */ .form_button { margin: 20px auto 40px; padding: 20px; position: relative; text-align: center; width: 100%; } /* ボタンが無効な状態 */ .form_button[disabled] { background: gray; cursor: no-drop; } /* ボタンが有効な状態 */ .form_button:not([disabled]) { background: green; } style>

isFormCompleteは関数の例で、関数の記述は割愛しています。

v-bind:部分で、!isFormComplete(フォーム入力が完了していない)場合に、ボタンにdisabled属性がつけるという動作を行っています。(!は否定の意味です)

すべてが入力されるとdisabledが外れ、ボタンが有効化されます。
それらがDOMに出力されると以下のような記述になります。






これはクラス名でも同様のことが可能です。
以下は条件によって動的にクラスをつける場合の記述例です。




style>
    /* ボタンのスタイル */
    .form_button {
        margin: 20px auto 40px;
        padding: 20px;
        position: relative;
        text-align: center;
        width: 100%;
        background: green;
    }

    /* ボタンが無効な状態 */
    .disabled-button {
        background: gray;
        cursor: no-drop;
    }
style>

こちらの場合、v-bind:の条件に一致する場合と.disabled-buttonのクラスが動的に入ります。

Vue.jsは仕組みがわかるとかなり便利!

Vue.jsは見た目がわかりやすい一方で、JavaScriptのデータが更新されると画面も更新されるリアクティブな仕組みなので、それを理解するのがかなり難しいです。

HTML要素とデータの依存関係をちゃんと理解・整理できるようになると、かなり便利なフレームワークなのではないかと思います!(私はまだ勉強中です…)

初心者の方は、ぱっと見わかりやすいディレクティブから覚えると、Vue.jsに入門しやすいのではないかと思うので、この記事をぜひ参考にしてみてください!





Source link

Views: 2

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -

インモビ転職