Vue3の基本的な使い方 超入門その2
前回の続き
前回は環境構築が中心でした。
今回は実際にコードの解説を入れていこうと思います。
ポイントのみにしていますので、コード全体は書籍を購入して確認してください。
Vue3の基本的な仕組み
値をリアルタイムにチェックし、状態を保持する
const appdata = {
data() {
return {
message: ''
}
},
created() {
this.message = 'Hello Vue!',
this.count = 0
},
mounted() {
timer = setInterval(() => {
this.count++
this.message = 'Count: ' + this.count
}, 1000)
}
}
定数「appdata」に以下のオブジェクト(メソッド)を代入する。
data関数:
・returnされた値を対象となるタグ内の{{ }}で指定された部分に当てはめる。
mounted関数:
・Vue3オブジェクトがWebページに組み込まれた際に実行される処理。
setInterval関数:(JavaScriptの関数)
・一定時間ごとに処理を実行する。今回は1000ms(ミリ秒)ごと。
created関数:
・アプリケーションオブジェクトが生成された際に実行される処理。
タイマーを停止する
let timer = null
function doAction() {
clearInterval(timer)
}
doAction関数は、ボタンをクリックすると呼び出すようにしておく。
clearInterval関数:
・setInterval関数で得られたタイマーを停止させる。
現在の日時を表示する
<p>{{ message + " [" + new Date().toLocaleString() + "]" }}</p>
リロードすると、messageの後ろに「現在の日時」が表示される。
setInterval関数で1000msごとに更新されるが、そのつどnew Date() される。
よって、1秒ごとに現在の日時が表示される。
stopボタンを押すと、その時刻で止まる。
ただし、コーディングの考え方としては
「表示はHTMLに、処理はスクリプトに」
が基本のようです。
要素と表示について
HTML要素を出力する
const list = ['One', 'Two', 'Three']
const appdata = {
data() {
return {
message: `<ul>
<li>${list[0]}</li>
<li>${list[1]}</li>
<li>${list[2]}</li>
</ul>`
}
}
}
テンプレートリテラル
・テキストを改行して記述
・「`」バッククォートで挟む
プレースホルダー
・${ 変数名など }
・あらかじめ用意していた変数などをはめこむ
<div v-html="message"></div>
v-htmlでHTMLソースコードを出力することができる。
三項演算子で条件分岐
{{num + 'は、' + (num % 2 == 0 ? '偶数' : '奇数') + 'です。'}}
与えられたnumの値によって、次のいずれかが表示される。
「○○は偶数です。」「○○は奇数です。」
配列をmapメソッドで繰り返し処理
<pre>{{data.map((value,key)=>key + ' :「' + value + '」').join('\n')}}</pre>
preタグ
・Preformatted Text(整形済みテキスト) の略。
・囲まれた範囲のソースに記述されたスペース・改行などを、そのまま等幅フォントで表示する。
mapメソッド
・配列の各要素ごとに処理を行って、新しい配列を生成する。
・引数の(value,key)には、配列の各要素の値とインデックスが渡される。
・その後、joinメソッドを呼び出して各項目の値を1つのテキストにまとめたものを出力させるとよい。
joinメソッド
・引数のテキスト(例:\n)を挟んで、各要素を1つのテキストにつなげる。
Bootstrapによるスタイル設定
headタグ内に記述する。
「CDNを利用する方法」と「npmでインストールする方法」がある。
class="container" // コンテンツの配置を自動調整する
class="text-○○○" // テキストの色
class="bg-○○○" // 背景色
class="h○○" // フォントサイズ h1〜h6
class="display-○○" // ディスプレイフォント(見出し) 1〜4
class="m-○○" // 余白の調整(マージン) 1〜5
class="p-○○" // 余白の調整(パディング) 1〜5
class="alert alert-色名" // 指定した色を使ったアラート
他にも以下のようなものが簡単に利用できる。
カードの表示
フォームの表示
チェックボックスとラジオボタン
V-属性の活用
属性に値をバインドする
<p v-bind:style="style">・・・</p>
<script>
const appdata = {
data() {
return {
style:'font-size:32pt; color:red;'
}
},
以下、省略
v-bindを使うことで、style属性にVue3で記述した「style」の値が設定される。
なお、v-bindの記述は省略できる。(例:<p style="style">)
オブジェクト構文
変数の値によってそのクラスが使われるかどうかが決まる。
trueならONになり、falseならOFFになる。
クラスそれぞれを外部からON/OFFすることが可能になる。
<script>
const appdata = {
data() {
return {
isRed: true,
isBlue: false
}
},
mounted() {
setInterval(()=>{
this.isBlue = !this.isBlue
this.isRed = !this.isRed
},1000)
}
}
isRedとisBlueの値が、1秒ごとにON(適用)/OFF(不適用)される。
初期値は、isRedがtrue、isBlueがfalse。
!を使うことで、値を反転(true⇔false)して再設定される。
v-bind:classにオブジェクトを設定する
<p v-bind:class="classes">
</p>
<script>
var classObj = {
red: true,
blue: false
}
const appdata = {
data() {
return {
classes : classObj
}
},
mounted() {
setInterval(()=>{
this.classes.red = !classObj.red
this.classes.blue = !classObj.blue
}, 1000)
}
}
classesという名前でclassObjが設定されています。
条件付きレンダリング v-if、v-else
<body>
<style>
.ok {
}
.ng {
}
</style>
<div id="app" class="container">
<p v-if="flag" class="ok">
</p>
<p v-else class="ng">
</p>
</div>
<script>
const appdata = {
data() {
return {
flag : true
}
},
タグの中にv-if属性を追加し、その値として真偽値として扱える変数を記述する。値がtrueならこのタグは表示され、falseなら表示されない。
v-elseは、v-ifを記述したタグの直後に配置する。直前のv-ifがfalseの場合に、このタグは表示される。
V-forによるリストレンダリング
<tr v-for="(item, id) in items">
<td>{{id}}</td>
<td>{{item.name}}</td>
<td>{{item.mail}}</td>
<td>{{item.tel}}</td>
</tr>
<script>
const appdata = {
data() {
return {
items:[
{name:'Taro', mail:'taro@yamada', tel:'999-999'},
{name:'Hanako', mail:'hanako@flower', tel:'888-888'}
]
data変数の中にitemsという配列を用意し、各要素にはname,mail,telというプロパティがある。
v-forではインデックス番号を第2引数として取り出すことができる。
オブジェクトをv-forする場合
<tr v-for="(item, key) in items">
<td>{{key}}</td>
<td>{{item.mail}}</td>
<td>{{item.tel}}</td>
</tr>
<script>
const appdata = {
data() {
return {
items:{
Taro: {mail:'taro@yamada', tel:'999-999'},
Hanako: {mail:'hanako@flower', tel:'888-888'}
}
v-forの引数は、値、キーの順で記述する。
※オブジェクトの基本
キーに重複は許されず、配列と違って並び順は保証されないことに注意!
以上、ここまでがChapter2です。
この記事が気に入ったらサポートをしてみませんか?