Vue3カプセル化メッセージメッセージプロンプトインスタンス関数の詳細な説明

Vue3カプセル化メッセージメッセージプロンプトインスタンス関数の詳細な説明

Vue3 カプセル化メッセージプロンプトインスタンス関数

  • Vue2.0 はVue.prototype.$message = function () {}を使用します。
  • vue3.0 は、プロトタイプ メソッドをマウントするために app.config.globalProperties を使用しますapp.config.globalProperties.$message = Message
  • また、import Message from './Message.js'を使用して関数を直接インポートすることもサポートしています。

スタイルレイアウトカプセル化メッセージ.vue

<テンプレート>
  <トランジション名="下">
    <div class="my-message" :style="style[type]" v-show='isShow'>
      <!-- スタイルは上にバインドされています -->
      <!-- 異なるプロンプトアイコンが変更されます-->
      <i class="iconfont" :class="[style[type].icon]"></i>
      <span class="text">{{text}}</span>
    </div>
  </トランジション>
</テンプレート>
<スクリプト>
'vue' から { onMounted, ref } をインポートします。
エクスポートデフォルト{
  名前: 'myMessage',
  小道具: {
    文章: {
      タイプ: 文字列、
      デフォルト: ''
    },
    タイプ: {
      タイプ: 文字列、
      // 警告 警告 エラー エラー 成功 成功 デフォルト: 'warn'
    }
  },
  設定 () {
    // 3つのスタイルを含むオブジェクトを定義します。オブジェクトキーは文字列型です。const style = {
      警告:
        アイコン: 'アイコン警告'、
        色: '#E6A23C',
        背景色: 'rgb(253, 246, 236)',
        境界線の色: 'rgb(250, 236, 216)'
      },
      エラー: {
        アイコン: 'icon-shanchu',
        色: '#F56C6C',
        背景色: 'rgb(254, 240, 240)',
        境界線の色: 'rgb(253, 226, 226)'
      },
      成功: {
        アイコン: 'icon-queren2',
        色: '#67C23A',
        背景色: 'rgb(240, 249, 235)',
        境界線の色: 'rgb(225, 243, 216)'
      }
    }
    // アニメーションを制御する const isShow = ref(false)
    // onMounted をトリガーします(() => {
      isShow.value = true
    })
    { style, isShow } を返します
  }
}
</スクリプト>
<style スコープ lang="less">
。下 {
  &-入力 {
    &-から {
      変換: translate3d(0, -75px, 0);
      不透明度: 0;
    }
    &-アクティブ {
      遷移: すべて 0.5 秒;
    }
    &-に {
      変換: なし;
      不透明度: 1;
    }
  }
}
.私のメッセージ{
  幅: 300ピクセル;
  高さ: 50px;
  位置: 固定;
  zインデックス: 9999;
  左: 50%;
  左マージン: -150px;
  上: 25px;
  行の高さ: 50px;
  パディング: 0 25px;
  境界線: 1px 実線 #e4e4e4;
  背景: #f5f5f5;
  色: #999;
  境界線の半径: 4px;
  私 {
    右マージン: 4px;
    垂直位置合わせ: 中央;
  }
  。文章 {
    垂直位置合わせ: 中央;
  }
}
</スタイル>

関数実装 message.js

//icon//textimport { createVNode,render } を 'vue' からインポートします
'./message.vue' から myMessage をインポートします。
// DOM コンテナを動的に作成する const div = document.createElement('div')
div.setAttribute('クラス','私のメッセージコンテナ')
ドキュメント本体に子要素を追加します。
エクスポートデフォルト ({テキスト、タイプ})=>{
  タイマーを null にする
  //createVNode は仮想ノードを作成するために使用されます // パラメーター 1 はコンポーネントをサポートします // パラメーター 2 はコンポーネントに渡されるオプションを表します const vnode = createVNode(myMessage,{text, type})
// 仮想ノードをページの DOM にレンダリングします // レンダリング関数のパラメータ // パラメータ 1: レンダリングするコンテンツ (仮想ノード) を示します
// パラメータ 2: レンダリングのターゲット位置 (DOM 要素) を示します
   レンダリング(vnode,div)
 // 1秒後に消えることを期待する clearTimeout(timer)
   タイマー = setTimeout(()=>{
     // div の内容をクリアします render(null,div)
   },1000)
}
// $message({ text: 'ログインに失敗しました', type: 'error'})

カスタムディレクティブの登録

'./Message.js' からメッセージをインポートします。
エクスポートデフォルト{
  インストール(アプリ){
  // グローバルプロパティをマウントしたい場合は、コンポーネントインスタンスを通じてプロパティ this.$message を呼び出すことができます。
     // インスタンスメソッドを拡張します app.config.globalProperties.$message = Message // プロトタイプ関数 }
}

使用:

方法1

'./message.js' からメッセージをインポートします。
設定(){
  メッセージ({ テキスト: 'ログインに失敗しました'、タイプ: 'エラー' })
}

方法2

// セットアップ関数でコンポーネントインスタンスオブジェクトにアクセスします。import { getCurrentInstance } from 'vue'
   設定(){
     定数インスタンス = getCurrentInstance()
     instance.proxy.$message({ text: 'ログインに失敗しました', type: 'error' })
   } 

方法 3 this.$message

this.$message({ text: 'ログインに失敗しました', type: 'error' })

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue3 手動カプセル化ポップアップ ボックス コンポーネント メッセージ メソッド
  • Vue3 はメッセージコンポーネントの例を実装します
  • vue をベースにしたグローバルメッセージコンポーネントを作成する
  • Vue での el-message のカプセル化と使用

<<:  MySQLのパフォーマンスが突然低下する理由

>>:  MySQLクラスタのDockerデプロイメントの実装

推薦する

Linux のハードリンクとソフトリンクの区別

Linux には、2 種類のファイル接続があります。1 つは Windows のショートカットに似て...

Tomcat を使用して Centos 環境に SpringBoot WAR パッケージをデプロイする

戦争パッケージを準備する1. 既存のSpringBootプロジェクトを準備し、pomに依存関係を追加...

Linux で削除できないファイル/フォルダの解決方法

序文最近、弊社のサーバーがハッカーの攻撃を受け、一部のファイルの属性が変更されたため、ウイルスファイ...

IDEA 2020 で Tomcat サーバーを構成するための詳細な手順

IDEA 2020 で Tomcat を構成する手順は次のとおりです。最初のステップはTomcatを...

角度コンテンツ投影の詳細な説明

目次単一コンテンツ投影マルチコンテンツ投影単一条件のコンテンツ投影アプリ-人物-htmlアプリ担当者...

MySQL テーブルスペースとは何ですか?

今日皆さんにお伝えしたいトピックは、「皆さんがよく話題にするテーブル スペースとは一体何でしょうか。...

トランザクションとロックを表示するための MySQL の一般的なステートメント

データベース内のトランザクションとロックを表示するための一般的なステートメントトランザクションの待機...

Linux インデックスノード inode の詳細な説明

1. inodeの紹介inode を理解するには、まずファイル ストレージから始める必要があります。...

MySQL 8.0.13 のインストールと設定のグラフィックチュートリアル

Msyqlデータベースのインストール、参考までに具体的な内容は次のとおりです。 ①ブラウザでhttp...

Linux IO 多重化 epoll ネットワーク プログラミング

序文この章では、基本的な Linux 関数と epoll 呼び出しを使用して、Linux 上で実行で...

Docker イメージ管理の一般的な操作コード例

ミラーリングも Docker のコアコンポーネントの 1 つです。ミラーリングはコンテナ操作の基盤で...

Win10 は Tsinghua ソースを使用して pytorch-GPU バージョンをすばやくインストールします (推奨)

Cudaがインストールされているかどうかを確認してくださいアナコンダプロンプトに入力nvcc -V...

RocketMQ の Docker インストールとインストール中に発生した問題の解決策

目次rocketmqイメージを取得する名前rvを作成する単一のブローカーノードを作成するrocket...

WeChatアプレットがテキストスクロールを実装

この記事の例では、WeChatアプレットでテキストスクロールを実装するための具体的なコードを参考まで...

1 つ以上のフィールドに基づいて重複データを検索する MySQL SQL ステートメント

SQLはテーブル内の重複レコードをすべて見つけます1. テーブルには id と name の 2 つ...