vue3のテレポート瞬間移動機能の使い方を詳しく解説

vue3のテレポート瞬間移動機能の使い方を詳しく解説

vue3テレポート瞬間移動機能の使用は参考用です。具体的な内容は次のとおりです。

テレポートは通常、瞬間テレポートコンポーネントと翻訳されますが、実際には理解するのが難しいです。私は「独立したコンポーネント」と理解しています。

書き込んだコンポーネントを任意の DOM にマウントできるため、非常に自由かつ独立しています。

例: ポップアップコンポーネントの作成

<テンプレート>
<テレポート先="#modal">
 <div id="center" v-if="isOpen">
 <h2><slot>これはモーダルです</slot></h2>
 <button @click="buttonClick">閉じる</button>
 </div>
</テレポート>
</テンプレート>
<script lang="ts">

エクスポートデフォルト{
 小道具: {
 isOpen: ブール値、
 },
 放出:
 'クローズモーダル': null
 },
 セットアップ(プロパティ、コンテキスト) {
 const ボタンクリック = () => {
 context.emit('モーダルを閉じる')
 }
 戻る {
 ボタンクリック
 }
 }
}
</スクリプト>
<スタイル>
 #中心 {
 幅: 200ピクセル;
 高さ: 200px;
 境界線: 2px 黒一色;
 背景: 白;
 位置: 固定;
 左: 50%;
 上位: 50%;
 左マージン: -100px;
 上マージン: -100px;
 }
</スタイル>

app.vue で使用する場合は、通常のコンポーネントを呼び出すのと同じです。

<テンプレート>
<div id="アプリ">
 <img alt="Vue ロゴ" src="./assets/logo.png">
 <HelloWorld msg="Vue.js アプリへようこそ"/>
 <フックデモ></フックデモ>
 <button @click="openModal">モーダルを開く</button><br/>
<modal :isOpen="modalIsOpen" @close-modal="onModalClose"> 私のモーダル !!!!</modal>
</div>
 
</テンプレート>
<スクリプト>
'./components/HelloWorld.vue' から HelloWorld をインポートします。
'./components/HooksDemo.vue' から HooksDemo をインポートします。
'./components/Modal.vue' から Modal をインポートします。
'vue' から{ref}をインポートします
エクスポートデフォルト{
 名前: 'アプリ'、
 コンポーネント:
 こんにちは世界、
 フックデモ、
 モーダル
 },
 設定() {
 定数 modalIsOpen = ref(false)
 定数オープンモーダル = () => {
 modalIsOpen.値 = true
 }
 定数onModalClose = () => {
 modalIsOpen.値 = false
 }
 戻る {
 モーダルが開いている、
 オープンモーダル、
 オンモーダルクローズ
 }
 }
}
</スクリプト>

<スタイル>
#アプリ {
 フォントファミリー: Avenir、Helvetica、Arial、sans-serif;
 -webkit-font-smoothing: アンチエイリアス;
 -moz-osx-font-smoothing: グレースケール;
 テキスト配置: 中央;
 色: #2c3e50;
 上マージン: 60px;
}
</スタイル>

app.vueファイルで使用する場合、モーダルはアプリのDOMノードの下にあり、親ノードのDOM構造とCSSがモーダルに影響し、問題が発生します。

1. モーダルは他のコンポーネントでラップされており、簡単に干渉される
2. スタイルは他のコンポーネントにも存在するため、非常に混乱しやすくなります。

Teleport は、モーダル コンポーネントを #app 内にネストする必要がないため、相互に干渉することなく、レンダリングしたい外部 DOM にモーダル コンポーネントをレンダリングできます。Teleport、コンポーネントを任意の場所に転送するためのポータルと考えることができます。これを使用する場合、 to属性によって、コンポーネントをマウントする DOM ノードを決定できます。

<テンプレート>
 <テレポート先="#modal">
 <div id="center">
 <h2>より良い</h2>
 </div>
 </テレポート>
</テンプレート>

publicフォルダの下のindex.htmlにノードを追加します。

<!DOCTYPE html>
<html lang="ja">
 <ヘッド>
 <メタ文字セット="utf-8">
 <meta http-equiv="X-UA-compatible" content="IE=edge">
 <meta name="viewport" content="width=デバイス幅,初期スケール=1.0">
 <link rel="icon" href="<%= BASE_URL %>favicon.ico" >
 <title><%= htmlWebpackPlugin.options.title %></title>
 </head>
 <本文>
 <スクリプトなし>
 <strong>申し訳ありませんが、JavaScript が有効になっていないと <%= htmlWebpackPlugin.options.title %> は正しく動作しません。続行するには JavaScript を有効にしてください。</strong>
 </noscript>
 <div id="アプリ"></div>
 <div id="モーダル"></div>
 <!-- ビルドされたファイルは自動的に挿入されます -->
 </本文>
</html>

このように、モーダル コンポーネントがアプリの下にマウントされておらず、アプリ コンポーネントの影響を受けていないことがわかります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

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

<<:  Server-U 14バージョンのインストールと使用方法

>>:  mysql 5.7.18 winx64 パスワード変更

推薦する

Docker ネットワークの原理とカスタム ネットワークの詳細な分析

Docker はホストマシン上のブリッジを仮想化します。コンテナを作成して起動すると、各コンテナには...

Mongodb の GUID 表示の問題の詳細な分析

問題を見つける最近、プログラムのストレージを Mongodb に移行したところ、Guid 型が書き込...

数ステップでサイバーパンク2077風の視覚効果を実現するCSS

背景記事を始める前に、賽博朋克とは何か、賽博朋克2077とは何かを簡単に理解しましょう。サイバーパン...

Vue プロジェクトをパッケージ化して Apache サーバーにデプロイする手順

開発環境では、vue プロジェクトは、ローカルで Express サーバーを構築することをベースにし...

VMware ESXi のインストールと使用記録(ダウンロード付き)

目次1. ESXiをインストールする2. ESXiをセットアップする3. ESXiを起動するESXi...

Tomcat イメージをインストールして Docker に Web プロジェクトをデプロイする方法を簡単に説明します。

1. Tomcatをインストールする1. Docker HubでTomcatイメージを見つける d...

Linux でのファイルの編集、保存、終了の実践的な説明

Linux でファイルを編集した後、保存して終了するにはどうすればよいですか?保存して終了するコマン...

MySQL で行を列に変換したり、列を行に変換したりする詳細な例

mysql 行から列へ、列から行へ難しい文章ではないので、詳しく説明はしません。文章を読むときは、一...

JavaScript の 50 以上のユーティリティ関数の概要

JavaScript は多くの素晴らしい機能を備えています。この記事では、作業効率の向上とコードのデ...

Nginx の realip モジュールの使い方の基礎学習

序文nginx モジュールには、公式とサードパーティの 2 種類があります。nginx のインストー...

Zen Coding 簡単で素早いHTMLの書き方

禅コーディングテキストエディタプラグインです。 Zen Coding を使用するテキスト エディター...

Vueでeslintを使用する方法の詳細な説明

目次1. 説明2. 関連する依存パッケージをダウンロードする3. 設定ファイル .eslintrc....

WeChatミニプログラムがいいねサービスを実装

この記事では、WeChatアプレットの具体的なコードを参考までに紹介します。具体的な内容は次のとおり...

Linux の Docker コンテナで bash を終了する 2 つの方法

bash を終了する場合は、次の 2 つのオプションがあります。最初のもの: Ctrl + d を押...