1. コンポーネント動的コンポーネントレンダリングを実装する方法
このタグはプレースホルダーと同等であり、バインドされたコンポーネントを指定するにはis属性を使用する必要があります。 <button @click="comName = 'Left'">左を表示</button> <button @click="comName = 'Right'">右を表示</button> <div class="box"> <!-- 左コンポーネントと右コンポーネントをレンダリングします--> <!-- コンポーネントは Vue に組み込まれています --> <!-- はレンダリングされるコンポーネントの名前を示します--> <コンポーネント:is="comName"></コンポーネント> </div> <スクリプト> '@/compeonents/Left.vue' から Left をインポートします。 '@/components/Right.vue' から Right をインポートします。 エクスポートデフォルト{ コンポーネント: 左、 右 }, データ() { 戻る { //comNameは表示されるコンポーネントの名前を示します。comName: Left、 } } } </スクリプト> 2. キープアライブ2.1 問題点ボタンプラスワン機能が 以下は <div class="left-container"> <h3>左コンポーネント----{{ count }}</h3> <button @click="count += 1">+1</button> </div> <スクリプト> エクスポートデフォルト{ データ(){ 戻る { カウント: 0 } } } </スクリプト> 追加後、 以下は エクスポートデフォルト{ 作成された() { console.log('左のコンポーネントが作成されました!') }, 破壊された(){ console.log('左のコンポーネントが破壊されました~') } } 再度アピール操作を実行すると、結果は次のようになります。 問題:コンポーネントを切り替えると、コンポーネントは同時に破棄および作成されるため、同じコンポーネントに切り替えるたびに、取得するコンポーネントオブジェクトは同じではなく、初期化データが上書きされます。 2.2 キープアライブを使って解決する
アプリのルート コンポーネントを次のように変更します。 <キープアライブ> <!-- keep-alive は内部コンポーネントを破棄せずにキャッシュできます --> <コンポーネント:is="comName"></コンポーネント> </キープアライブ> 2.3キープアライブライフサイクルこのライフサイクルは、コンポーネントが コンポーネントがキャッシュされると、 コンポーネントがアクティブ化されると、 //コンポーネントが初めて作成されると、まずcreatedがトリガーされ、次にactivatedが実行されます //コンポーネントがアクティブ化されると、アクティブ化されたものだけがトリガーされ、作成されません アクティブ化() { console.log('コンポーネントがアクティブ化されました、アクティブ化されました') }, 非アクティブ化(){ console.log('コンポーネントはキャッシュされ、非アクティブ化されています') } 2.4keep-alive include、exclude プロパティデフォルトでは、 キャッシュする必要があるコンポーネントを指定する方法: <キープアライブを含める="Left,MyRight"> <コンポーネント:is="comName"></コンポーネント> </キープアライブ>
左のコンポーネントの場合: デフォルトをエクスポートする{} 右側のコンポーネントの場合: エクスポートデフォルト{ //name属性が指定されている場合、コンポーネントの名前はname属性の値になります。name: 'MyRight' }
コンポーネントの外側: Left '@/components/Left.vue' をインポートします。 コンポーネント: 左、 } ここで登録された名前は、コンポーネントを参照するためにのみ使用されます。コンポーネントに コンポーネント内部: エクスポートデフォルト{ //name属性が指定されている場合、コンポーネントの名前はname属性の値になります。name: 'MyRight' } コンポーネント内に これで、vue 動的コンポーネントに関するこの記事は終了です。vue 動的コンポーネントに関するその他の関連コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL における TIMESTAMPDIFF ケースの詳細な説明
Nginx におけるいわゆる接続制限は、実際には TCP 接続、つまり 3 ウェイ ハンドシェイク後...
背景最近、SQL 文を書くときに、IN と Exists のどちらを選択するか迷ったので、両方の方法...
DockerにはCEとEEがあり、CE版はコミュニティ版(無料)、EE版はセキュリティを重視したエン...
スライドショーは Web ページでよく見られます。美しい写真が使われています。こちらは純粋な CSS...
この記事では、Gobangゲームを実装するためのキャンバスの具体的なコードを参考までに共有します。具...
WebページWB.ExecWB制御印刷方法コードをコピーコードは次のとおりです。 <テーブルの...
まず、ページにビデオを埋め込むための HTML コードは次のとおりです。コードをコピーコードは次のと...
1. 正常に生成されたアイコン ファイルをダウンロードし、名前を favico.ico に変更して、...
この記事では、Linux 環境で crontab コマンドを使用して、タスクの定期的な実行をスケジュ...
そこで、個性的なスタジオやフリーランスを表現する組み合わせを 30 個選びました。デザインを目立たせ...
複数のデータベースをバックアップするには、次のコマンドを使用できます。 mysqldump -uro...
この記事では、ログインジャンプを実装するためのVueの具体的なコードを例として紹介します。具体的な内...
目次モジュール化の基本概念モジュール化とは何かモジュール分解の利点Node.js のモジュール性No...
1. フレームセット、フレーム、iframeを使用して複数のウィンドウを実現する2. 画像上のマッ...
この記事は参考までにmysql 8.0.19 winx64.zipのインストールチュートリアルを記録...