VUE 3 テレポート コンポーネントと使用構文をすぐに使い始める

VUE 3 テレポート コンポーネントと使用構文をすぐに使い始める

1. テレポートの紹介

テレポート コンポーネントは、その中のコンテンツの親要素を指定するための簡潔な方法を提供します。簡単に言えば、テレポート内のコンテンツは任意の DOM で制御できるため、使いやすいです。

使用する構文:

<テレポート先="body">
    <div>
   作成するコンテンツ</div>  
</テレポート>

to 属性は、テレポート内のコンテンツが追加される DOM 要素を指定します。タグ名、ID、またはクラス名にすることができます。

//タグ名。上記の例は、タグ名を使用して body 要素に追加されます。
<teleport to="body"></teleport>

//クラス名。例: to=".className"
<teleport to=".className"></teleport>

//id 名 <teleport to="#idName"></teleport>

1.1. 複数のテレポートを使用する

複数のテレポート ポータル コンポーネントは、そのすべてのコンテンツを 1 つのターゲットにマウントできます。複数のテレポート コンポーネントのコンテンツは兄弟ノードであり、最初にマウントされたコンテンツが前面に、後でマウントされたコンテンツが背面にマウントされます。

次のように使用します。

<テレポート先="body">
    <div class="first">
   最初の取り付け要素</div>  
</テレポート>
<テレポート先="body">
    <div class="second">
   2番目の取り付け要素</div>  
</テレポート>

実行結果は図に示されています。

上記の例は次の例と同等です。

<テレポート先="body">
 <div class="first">
  最初の取り付け要素</div>
 <div class="second">
  2番目の取り付け要素</div>
</テレポート>

2. テレポートを使用する理由

Vue で開発する場合、複数のコンポーネントが常にネストされるため、要素のスタイルや階層の処理が難しくなります。たとえば、モーダルまたはトーストプロンプトボックスを追加する必要がある場合、そのようなボックスを Vue コンポーネントから分離できれば、スタイルと階層を設定しやすくなります。

学生の中には、index.html に直接記述したほうが良いのではないかと思う人もいるかもしれません。さらに、モーダル要素とトースト要素は、vue コンポーネントの状態値を使用して、状態を通じてモーダルとトーストの非表示と表示を制御する必要があります。 index.html に直接記述すると状態制御が複雑になります。

そこで、テレポートコンポーネントが役に立ちます。これは、要素を任意の要素にテレポートできる「ドラえもん」のどこでもドアに少し似ています。 vue コンポーネントの状態値を使用して制御することもできます。

3. テレポートアプリケーション

vite + vue 3 を使用して作成されたプロジェクト。プロジェクトの作成方法の詳細については、「え、まだ webpack 使ってるの?」を参照してください。 「他の人はプロジェクトを構築するために vite を使用しています」という記事。

Vue 3 プロジェクトが作成されたら、index.htm ファイルを見つけて以下を追加します。

<div id="newModal"></div>    

コンポーネント ファイルに、テレポート コンポーネントを追加します。

<button @click="showModal" class="btn">モーダルを開く </button>
<!-- to 属性はターゲットの場所です -->
<テレポート先="#newModal">
 <div v-if="表示">
  <div>私はモーダルボックスです</div>
  </div>
</テレポート>

実行結果から、使用されたテレポート コンポーネントは、<div></div> と同じレベルの to 属性を介してコンテンツを <div></div> に送信することがわかりました。現時点では、テレポート内の要素の非表示と表示は、vue コンポーネント内の状態値によって完全に決定されます。

4. 初心者が陥りやすい落とし穴

学生の中には、テレポート コンポーネントを自分のプロジェクトに直接導入した人もいました。実行してみると、コンポーネントはそのまま出力されるものの、解析されずにエラーが報告されることがわかりました。

エラーメッセージは次のとおりです。

vue.runtime.esm.js?2b0e:619 [Vue 警告]: 不明なカスタム要素: <teleport> - コンポーネントを正しく登録しましたか? 再帰コンポーネントの場合は、必ず「name」オプションを指定してください。

それからインターネットで解決策を探しましたが、何も見つかりませんでした。

根本的な原因は、vue3 ではなく、まだ vue2 を使用していることです。学生の中には、vue-cli 3 を scaffold して作成したプロジェクトを vue3 とみなす人もいます。 vue-cli 2 と vue-cli 3 を使用してプロジェクトを作成することと、それが vue3 であるかどうかとの間には、必ずしも関連性はありません。

VUE 3 テレポート コンポーネントをすぐに使い始める方法についての記事はこれで終わりです。VUE 3 テレポートに関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue3の組み込みコンポーネントであるTeleportの使い方を詳しく説明します
  • Vue3 での Teleport の使用に関する詳細な説明
  • vue3のテレポート瞬間移動機能の使い方を詳しく解説
  • Vue3 Teleportの実践と原理の詳細な説明

<<:  Windows サービス 2012 Alibaba Cloud サーバーで MySQL をビルドするときに msvcr100.dll ファイルが見つからないという問題を解決します

>>:  美しいHTMLコードの書き方

推薦する

ES6 ループと反復可能オブジェクトの例

この記事では、ES6 の for ... of ループについて説明します。古い方法以前は、JavaS...

MySQLクエリが遅い原因と解決策

クエリ速度が遅くなる理由は多数ありますが、最も一般的な理由は次のとおりです。 1. インデックスがな...

3列レイアウトを実現するCSS3フレキシブルボックスフレックス

タイトルの通り、高さは既知で、左と右の列の幅は 300 ピクセル、中央は適応型です。弾性ボックス自体...

Tomcat ソースコード起動コンソールの中国語文字化けのデバッグプロセス記録

問題を見つける今日はTomcatのソースコードを勉強するつもりなので、公式サイトからTomcatのソ...

Vueプロジェクトウォッチで関数が繰り返しトリガーされる問題の解決

目次問題の説明:解決策1解決策2問題の説明:ページ A と B の 2 つがあり、各ページにはget...

ウェブサイトはグレー表示されています。画像を含む互換コードはすべてのブラウザをサポートしています

通常、国喪の日、大地震の日、清明節には、ウェブサイト全体を灰色にして、故人への哀悼の意を表します。そ...

Vueリストレンダリングキーの原理と機能の詳細な説明

目次リストレンダリングキーの原理と機能主要原則の分析キーの役割要約するリストレンダリングキーの原理と...

CSS background-blend-modeの仕組みを深く理解する

この記事は共有および集約することを歓迎します。全文を転載する必要はありません。著作権を尊重してくださ...

Linux システムで IPv6 をサポートするように Nginx を設定する方法

1. 既存のnginxがipv6をサポートしているかどうかを確認する既存の nginx が ipv6...

CentOS 6.5 インストール mysql5.7 チュートリアル

1. 新機能MySQL 5.7 はエキサイティングなマイルストーンです。デフォルトの InnoDB ...

NginxにおけるRewriteのリダイレクト設定と実践の詳しい解説

1: アドレス書き換えとア​​ドレス転送の意味を理解する。アドレス書き換えとア​​ドレス転送は異なる...

Vue.jsはシンプルな折りたたみパネルを実装します

この記事では、Vue.jsの具体的なコードを共有して、シンプルな折りたたみパネルを実装する例を紹介し...

MySQLクエリのソートとページング関連

概要通常、データベース内のデータを直接表示することは望ましくないため、最後の 2 つのセクションでは...

MySQLの累積集計原理と使用例の分析

この記事では、例を使用して、MySQL 累積集計の原理と使用方法を説明します。ご参考までに、詳細は以...

html、xhtml、xmlの違い

開発動向: html (ハイパーテキスト マークアップ言語) - xhtml (拡張ハイパーテキスト...