この記事では、以下の内容を取り上げます。
テレポートの目的まず、テレポート機能をいつ、どのように使用するのかについて説明します。 大規模な Vue プロジェクトを開発する場合は、コードを再利用可能なロジックに整理する必要があります。ただし、モーダル、通知、ツールチップなどの特定の種類のコンポーネントを扱う場合、テンプレート HTML のロジックは、レンダリングされる要素が必要なファイルと同じファイルにない可能性があります。 実際、ほとんどの場合、Vue の完全に独立した DOM を使用するよりも、これらの要素を処理する方がはるかに簡単です。ネストされたコンポーネントの位置、z-index、スタイルなどは、すべての親のスコープに対処する必要があるため、複雑になることがあります。 ここでテレポートが役立ちます。ロジックが配置されているコンポーネントにテンプレート コードを記述すると、コンポーネントのデータやプロパティを使用できるようになります。 Teleport がなければ、子コンポーネントから DOM ツリーにロジックを渡すためのイベント伝播についても考慮する必要があります。 テレポートの仕組み通知ポップアップをトリガーする子コンポーネントがあるとします。先ほど説明したように、通知が Vue のルート #app 要素ではなく、完全に別の DOM ツリーでレンダリングされる方がはるかに簡単になります。 まず、index.html を編集し、</body> の前に <div> を追加します。 //インデックス.html <本文> <div id="アプリ"></div> <div id='ポータルターゲット'></div> </本文> 次に、レンダリング通知をトリガーするコンポーネントを作成します。 //Vueポータル.vue <テンプレート> <div class='ポータル'> <button @click='showNotification'> 通知をトリガーします! </button> <テレポート先='#portal-target'> <div クラス = '通知'> これは、この子コンポーネントの外部でレンダリングされます。 </div> </テレポート> </div> </テンプレート> <スクリプト> 'vue' から { ref } をインポートします エクスポートデフォルト{ 設定 () { 定数isOpen = ref(false) var ポップアップを閉じる const showNotification = () => { isOpen.値 = true タイムアウトをクリア(ポップアップを閉じる) closePopup = setTimeout(() => { isOpen.値 = false }, 2000) } 戻る { 開いている、 通知を表示 } } } </スクリプト> <スタイルスコープ> 。通知 { フォントファミリー: myriad-pro、sans-serif; 位置: 固定; 下: 20px; 左: 20px; 幅: 300ピクセル; パディング: 30px; 背景色: #fff; } </スタイル> このコード スニペットでは、ボタンが押されると、通知が 2 秒間表示されます。しかし、私たちの主な目標は、Teleport を使用して通知を取得し、VUE プログラム外でレンダリングすることです。 ご覧のとおり、Teleportには必須の属性が1つあります。 to 属性には、次のような有効な DOM クエリ文字列を指定します。
#portal-target でコードを渡したので、Vue プログラムは index.html に含めた #portal-target div を見つけ、ポータル内のすべてのコードを渡してその div でレンダリングします。 結果は次のとおりです。 要素を検査して DOM を見ると、何が起こっているのかがかなり明確にわかります。 VuePortals コンポーネントのすべてのロジックを使用できますが、どのテンプレート コードを別の場所にレンダリングするかをプロジェクトに指示する必要があります。 以上がVue3のTeleportの詳しい説明です。Vue3のTeleportについてさらに詳しく知りたい方は、123WORDPRESS.COMの関連記事もぜひご覧ください! 以下もご興味があるかもしれません:
|
>>: docker run によって起動されたコンテナがハングしてデータが失われた場合の対処方法
この記事の例では、ネイティブJSカプセル化vueタブ切り替えの具体的なコードを参考までに共有していま...
目次1. forループ2. 二重の for ループ3. whileループ4. dowhileループ5...
この記事では、参考までに、簡単な計算機を実装するためのJavaScriptの具体的なコードを紹介しま...
Dockerfile は、イメージをビルドするために使用されるテキスト ファイルです。テキスト コン...
この記事はmysql8.0.0 winx64.zip解凍版のインストールチュートリアルを記録していま...
目次1. 基本的な文法2. 条件式によるフィルタリング3. 論理式によるフィルタリング4. あいまい...
目次背景1. 文書の説明2. 特定の用途結論背景ここで、状況について説明しましょう。親コンポーネント...
序文この記事では、vue に付属している vue-router.js ルーティングを使用してページン...
ミニプログラムページ間で値を渡すみなさんこんばんは。こんばんはと言うのは、これを夜に書いたからです。...
序文日常業務では、すべての jpg ファイルを bnp に変更したり、名前の 1 を one に変更...
目次序文1. エラーログ2. バイナリログ1. バイナリログを有効にする2. バイナリログ形式3. ...
長い間ブログを書いていませんでした。先週、プロジェクトをテストしたところ、いくつかのバグが見つかりま...
また、Dockerを使用してDjangoプロジェクトをデプロイするのも非常に簡単です。とても良いです...
なぜ Nexus プライベート サーバーを構築する必要があるのでしょうか。その理由は非常に簡単です。...
CSSフィルターを使用してマウスオーバー効果を記述する <div class="fi...