Vue.js ループ文
Vue では、ループ文は主に v-for ディレクティブを使用して実現され、配列やオブジェクトを反復処理して、対応する数の要素を生成します。
要素に v-for ディレクティブを使用すると、ソースデータの配列またはオブジェクトに基づいて要素をループレンダリングします。
配列の反復:
v-for="(item, index) in items"
オブジェクトの反復:
v-for="(value, key, index) in object"
key の役割: の使用
v-forリストをレンダリングするときは、各項目に一意のkey属性を指定する必要があります。これにより、Vue が各項目の一意性を認識し、効率的な DOM 更新を行うことができます。ネストされたループ: は複数ネストして使用できます
v-for多次元配列やオブジェクト構造をレンダリングします。
v-for はデータを配列にバインドしてリストをレンダリングできます:
v-for の例
<ol>
<li v-for="site in sites">
{{ site.text }}
</li>
</ol>
</div>
<script>
const app = {
data() {
return {
sites: [
{ text: 'Google' },
{ text: 'サンプル' },
{ text: 'Taobao' }
]
}
}
}
Vue.createApp(app).mount('#app')
</script>
試してみる »
v-for はオプションの2番目のパラメータもサポートしており、パラメータ値は現在の項目のインデックスです:
v-for の例
index はリスト項目のインデックス値です:
<ol>
<li v-for="(site, index) in sites">
{{ index }} -{{ site.text }}
</li>
</ol>
</div>
<script>
const app = {
data() {
return {
sites: [
{ text: 'Google' },
{ text: 'サンプル' },
{ text: 'Taobao' }
]
}
}
}
Vue.createApp(app).mount('#app')
</script>
試してみる »
テンプレート <template> 内での v-for の使用:
v-for
試してみる »
v-for オブジェクトの反復
v-for はオブジェクトのプロパティを介してデータを反復処理できます:
v-for
試してみる »
2番目のパラメータとしてキー名を指定することもできます:
v-for
試してみる »
3番目のパラメータはインデックスです:
v-for
試してみる »
v-for 整数の反復
v-for は整数をループすることもできます
フィルタリング/ソート後の結果を表示
配列の要素を処理してから表示することができます。通常は算出プロパティを作成して、フィルタリングまたはソートされた配列を返します。
v-for の例
配列内の偶数を出力:
試してみる »
v-for/v-if の併用
上記の例では、v-for/v-if を併用して select にデフォルト値を設定しています:
v-for/v-if の例
v-for でリストをループし、v-if で選択値を設定します:
試してみる »
コンポーネントでの v-for の使用
コンポーネントについてまだ理解していない場合は、この部分はスキップしても構いません。
カスタムコンポーネントでは、通常の要素と同じように v-for を使用できます:
<my-component v-for="item in items" :key="item.id"></my-component>
ただし、コンポーネントには独立したスコープがあるため、データは自動的にコンポーネントに渡されません。反復データをコンポーネントに渡すには、props を使用する必要があります:
<my-component v-for="(item, index) in items" :item="item" :index="index" :key="item.id" ></my-component>
item をコンポーネントに自動的に注入しない理由は、コンポーネントが v-for の動作と密に結合してしまうためです。コンポーネントのデータソースを明確にすることで、コンポーネントを他の場面で再利用できます。
以下は簡単な todo リストの完全な例です:
例
試してみる »