序文: コンポーネントのテンプレートの一部が論理的にはそのコンポーネントに属している場合もありますが、技術的な観点からは、テンプレートのこの部分を Vue アプリ外の シナリオ例:クリックするとモーダルダイアログボックスを開く このモーダル ダイアログ ボックスのビジネス ロジックの場所は間違いなくこの これにより問題が発生します。コンポーネントの論理的な位置が これまでの 1. テレポートの使用使い方は非常に簡単です。コンポーネントを目的の位置にレンダリングするには、to 属性を使用するだけです。 // body タグにレンダリングします <teleport to="body"> <div class="modal"> 私はテレポートしたモーダルです! </div> </テレポート> 以下も使用できます: <teleport to="#some-id" /> <teleport to=".some-class" /> <teleport to="[data-teleport]" /> 有効なクエリセレクターまたは さらに遠く 2. モーダルダイアログコンポーネントを完成させるでは、標準のモーダルダイアログボックスをカプセル化してみましょう <テンプレート> <テレポート先="body"> <トランジション名="ダイアログフェード"> <div class="dialog-wrapper" v-show="visible"> <div class="ダイアログ"> <div class="ダイアログヘッダー"> <スロット名="タイトル"> <span class="ダイアログタイトル"> {{ タイトル }} </span> </スロット> </div> <div class="ダイアログボディ"> <スロット></スロット> </div> <div class="ダイアログフッター"> <スロット名="フッター"> <button @click="onClose">閉じる</button> </スロット> </div> </div> </div> </トランジション> </テレポート> </テンプレート> <スクリプト> 'vue' から defineComponent をインポートします。 エクスポートデフォルトdefineComponent({ 名前: 'tdialog' }); </スクリプト> <スクリプトの設定> const props = defineProps({ タイトル: 文字列、 表示: ブール値 }); const 出力 = defineEmits(['close']); 定数 onClose = () => { 出力('閉じる'); }; </スクリプト> 使用する際は、 <t-dialog title="LGD は無敵です" :visible="visible" @close="onClose"> これはコンテンツの一部です、Xiaose Xianbei。 </t-ダイアログ> // ... const 可視 = ref(false); 定数onDialog = () => { 表示される値 = !表示される値; }; 定数 onClose = () => { 表示値 = false; }; さらに一歩進んで 3. コンポーネントのレンダリング上記で、標準のモーダル ダイアログ コンポーネントが完成しました。少量のテキストのみを表示する、同様の軽量プロンプト コンポーネント 上記の例では、 // プロンプトを呼び出します Message({ message: 'This is a Message' }); 関数を使用して呼び出す場合は、この関数を準備する必要があります。この関数の機能は、コンポーネントのレンダリングを完了することです。 const メッセージ = オプション => { // コンテナをレンダリングする準備をする const container = document.createElement('div'); // vnode を生成する const vnode = createVNode(メッセージコンストラクタ、オプション); // レンダリングレンダー(vnode, コンテナ); };
<テンプレート> <テレポート先="#app"> <transition name="メッセージフェード"> <div v-show="visible" ref="ins" class="message" :style="customStyle">{{ メッセージ }}</div> </トランジション> </テレポート> </テンプレート> オンライン体験 コードを表示 要約: 以上が、私たちに多くの利便性を提供してくれる 以下もご興味があるかもしれません:
|
<<: スライドドアを実装するための CSS サンプルコード
>>: dockerコンテナにviコマンドをインストールする簡単な操作
1.ダウンロードしてインストールする公式ウェブサイトからコミュニティ エディションの dmg インス...
「壮大」という言葉は、おそらく現代のデザイナーが最も聞きたくない言葉でしょう。デザイナー:「デザイン...
目次1. 本来の定義2. JS操作、幅の変更を例に3. 効果: 幅が変更されました 1. 本来の定義...
Nginx ログの説明アクセス ログを通じて、ユーザーの地理的起源、ジャンプ元、使用端末、特定の U...
1. HTML の要素とタグ<br />要素は、1 つのタグまたは 1 組のタグによって...
背景: 最近、資産報告関連の機能に取り組んでおり、中国語入力をサポートする必要があります。通常のショ...
Dockerコンテナの状態遷移図2度目の実戦 [root@localhost ~]# docker ...
目次データベースにインデックスが必要なのはなぜですか?インデックスが B+Tree データ構造を使用...
<html:reset> タグを使用すると、リセット ボタンが無効になり、ボタンをクリッ...
1: django-admin.py startproject プロジェクト名2: cd プロジェク...
1. Dockerネットワークカードを作成する [root@i ~]# brctl addbr d...
MySQL エスケープエスケープとは、エスケープ文字の本来の意味を意味します。エスケープ文字の目的は...
質問最近、SSH フレームワークを使用して実用的なプロジェクトを完了していたときに、長い間悩まされて...
いわゆる 3 列適応レイアウトとは、両側の幅が固定され、中央のブロックの幅が適応されることを意味しま...
背景私は新しいプロジェクト チームに配属されたので、プロジェクトでは js を使用する必要があります...