【Nuxt.js】コンポーネントシステムの基本的な使い方(props)【勉強6】
はじめに
自分が勉強した内容のまとめなので、正確性は保証しません。
こちらのサイトにcodesandboxを埋め込んでいます。
実際の振る舞いを見ながらコードの確認ができるので非常に便利です。
シンプルにcodesandboxめちゃくちゃおすすめなので、気になる方使ってみてください。
コンポーネントシステムについて
これまではページのみで様々なプロジェクトを作成してきました。
ここからはコンポーネントシステムを含めたプロジェクトの作成
コンポーネントシステムは 再利用性を意識したプロジェクトにおいて重要な抽象概念です。
「小さく、自己完結的で、(多くの場合)再利用可能なコンポーネント」を組み合わせることで、
中・大規模アプリケーションをきれいに、わかりやすく構築することが可能になります。
アプリケーションのインターフェイスについて考えてみると、
ほぼすべてのタイプのインターフェイスはコンポーネントツリーとして抽象化することができます。
シンプルなコンポーネント利用
簡単なコンポーネント利用のプロジェクトをこちらのサイトで作成しました。
実物を見ながらコードのほうも確認できます。
ここからはコードの解説です。
・<script>内でのコンポーネントの呼び出し処理
処理としては2つです。
コンポーネントのインポート処理
import todoItem from "~/components/todoItem.vue";
利用コンポーネントの宣言処理
components: {
todoItem
}
これで<template>内で自由にコンポーネントを利用することができます。
・<template>内でのコンポーネント呼び出し処理
こちらもシンプルなコードで呼び出すことができます。
<todoItem></todoItem>
上記のコードにより、todoItem.vueの中身を利用することができます。
コンポーネントにデータを渡す(props)
propsとは、親(page or component)から子(component)にデータを渡す仕組みです。
こちらも実物を見ながらコードを確認していきましょう。
今回注目していただきたいのは次の2つのコードです。
・親(page)からpropsを設定するコード(index.vue)
<todoItem todoText="This is a props todo"></todoItem>
・子(component)がpropsを受け取るコード(todoItem.vue)
props: ["todoText"]
propsでデータを渡すこと自体はさほど難しくないかと思われます。
実際にプロジェクトを作成していく中で難しいのは、propsをどう使っていくのかです。
コンポーネントを少しだけ変えてループで使いまわす(propsとループ)
同一コンポーネントをループ処理で使いまわします。
こちらも実物を見ながら確認していきましょう。
注目していただきたいのは次のコードです。
<todoItem v-for="item in groceryList" v-bind:todo="item" v-bind:key="item.id"></todoItem>
コンポーネント呼び出しのコードだけで、ループ処理まで実現できてしまいます。
propsのオプション
詳しい使い方はここでは省略しますが、propsには次のようなオプション機能が存在します。
・type – データの種類の指定(String,Number,Boolean)
・require – 必須かどうかを指定
・default – 初期値の指定。値が入っていなければdefaultの値が採用される
おわりに
簡単にですが、基本的なコンポーネントの使い方について紹介しました。
コンポーネントを上手に使えば、まとまったコードを記載することができます。
どの単位でコンポーネントを分割するのかを考え、有効的にコンポーネントを利用していきましょう。
お疲れ様でした。
Author And Source
この問題について(【Nuxt.js】コンポーネントシステムの基本的な使い方(props)【勉強6】), 我々は、より多くの情報をここで見つけました https://qiita.com/Wallaby19/items/08ec3022572d7647687e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .