プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Vue.js
  • 【Vue.js】「動的コンポーネント」について
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Vue.js】「動的コンポーネント」について

06.07

  • miyabisan2
  • コメントを書く

この記事は1分で読めます

動的コンポーネントとは?

一つのタグの記述でコンポーネントを動的に切り替える事ができる機能です。動的コンポーネントを使わない場合はv-if等でコンポーネントを複数記述する必要がある場合に比べると非常にすっきり記述する事が可能になります。

書き方

data内容はその画面内でボタンクリック等の何かをトリガーにして切り替えるようにします。なお、切り替えたいコンポーネントは事前にソース内にimportしておく必要があります。

1
2
3
4
<component :is="コンポーネント名を格納したdata"></component>
 
import 切り替えたいコンポーネント名1 from 'コンポーネントパス';
import 切り替えたいコンポーネント名2 from 'コンポーネントパス';

componentタグにis属性を使えば実現できます。(内部的にはv-bindで付与しています。)

注意点

コンポーネントを切り替える度にVueインスタンスがdestroyされて再生成される点です。もし、片方のコンポーネントで入力データを保持するような作りになっていたらそのデータも消えてしまいます。

対処法

Vue.jsには対処方法が用意されています。結論としては動的コンポーネントをkeep-aliveタグで囲います。囲うことで全てのデータがキャッシュされるようになります。

1
2
3
<keep-alive>
<component :is="コンポーネント名を格納したdata"></component>
</keep-alive>

ただ、これをしてしまうと本来のdestroyやcreatedに該当するライフサイクルを実行できなくなってしまいますよね。そのためにVue.jsではkeep-aliveタグで囲った時だけ新たなライフサイクルフックを用意していてくれます。

activated

createdの代わりになるライフサイクルフックです。

1
2
3
4
5
6
7
8
9
10
<template>
  <p>home</p>
</template>
<script>
export default {
  activated() {
    console.log("activated");
  }
};
</script>

deactivated

destoryの代わりになるライフサイクルフックです。

1
2
3
4
5
6
7
8
9
10
<template>
  <p>home</p>
</template>
<script>
export default {
  deactivated() {
    console.log("deactivated");
  },
};
</script>

スポンサーリンク
  • 2020 06.07
  • miyabisan2
  • コメントを書く
  • Vue.js
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2018 07.17

    【Vue.js】「Vue Router」の基本、「Vuex」と連携してルーティング情報を一元管理

  2. 2018 07.15

    【Vue.js】「Vue CLI」を使って、webpackテンプレートからサンプルアプリを作成する。

  3. 2020 04.12

    【Vue.js】コンポーネントから「Vuex」を呼び出す。

  4. 2020 06.12

    【Vue.js】テストコードを書くには?(Vue Test Utilsなど)

  5. 2020 06.06

    【Vue.js】Vue CLIで生成したファイルの意味を理解する

  6. 2018 07.16

    【Vue.js】「コンポーネントの親子関係」について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Vue.js】webpackビルドした後の「dist…

【Vue.js】「カスタムディレクティブ」について

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー