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 パスワード変更

推薦する

mysql5.7.19 winx64 解凍版のインストールと設定のチュートリアル

mysql 5.7.19 winx64解凍版のインストールチュートリアルを収録しました。具体的な内容...

HTMLフォーム属性のreadonlyとdisabledの使い方

1. readonly 読み取り専用属性なので、値を取得できます2. 無効: 無効な属性、値を取得で...

mysqlはルートユーザーと一般ユーザーを作成し、機能を変更および削除します。

方法1: SET PASSWORDコマンドを使用する mysql -u ルート mysql> ...

IDEA が Docker を統合してリモート展開を実現するための手順

1. Dockerサーバーへのリモートアクセスを有効にするdocker が配置されているリモート サ...

htmlハイパーリンクaのクリックイベントの後、hrefで指定されたアドレスにジャンプします。

場合によっては、ジャンプを完了するために href の代わりにハイパーリンク <a> を...

MySQLにおけるトランザクション分離レベルの実装原理の詳細な説明

序文データベース トランザクションに関して言えば、トランザクションの ACID 特性、分離レベル、解...

Ubuntu 19.04 インストール チュートリアル (画像とテキストの手順)

1. 準備1.1 VMware 15 をダウンロードしてインストールするダウンロード リンク: h...

XML構文の詳細な説明

1. 文書化ルール1. 大文字と小文字が区別されます。 2. 属性値は引用符(一重引用符または二重引...

MySQL innodb_autoinc_lock_mode について

innodb_autoinc_lock_mode パラメータは、auto_increment 列を持...

CSS最適化スキルの自己実践体験

1. CSS スプライトを使用します。利点は、CSS で使用される小さな画像を 1 つの大きな画像に...

MySQL の異常なエラー ERROR: 2002 を解決する方法

最近、MySQL の起動中にエラーが発生しました。エラー メッセージは次のとおりです。 エラー 20...

JavaScript でカウントダウン効果を実装する

カウントダウン効果を実現するにはJavascriptを使用します。参考までに、具体的な内容は次のとお...

MySQL データをエクスポートする際の secure-file-priv 問題の解決方法

エラー 1290 (HY000) : MySQL サーバーは –secure-file-priv オ...

CSS を使用して画像の色を変更する 100 の方法 (収集する価値あり)

序文「画像処理というと、PhotoShop などの画像処理ツールを思い浮かべることが多いです。フロン...

nginx クッキーの有効期間に関する議論の要約

訪問するたびにブラウザにCookieが生成されますが、 Cookieの存在はユーザーにとって良いこと...