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デプロイメントの実装

推薦する

IDEA 2020.3.1 で Tomcat をデプロイし、最初の Web プロジェクトを作成するプロセスの詳細な説明

目次Tomcat の紹介Tomcat の展開Web プロジェクトの作成tomcatの設定プロジェクト...

Vueは画像のドラッグアンドドロップ機能を実装します

この記事の例では、画像のドラッグアンドドロップ機能を実現するためのVueの具体的なコードを参考までに...

Linux で rc.local ファイルがない場合の完璧なソリューション

新しい Linux ディストリビューションには rc.local ファイルがなくなりました。サービス...

Alibaba Cloud Centos6.X でメールを送信する際に発生するさまざまな問題

序文: Webサービスを提供するために、Alibabaクラウドホストを新しくインストールしました。す...

Nginx ロードバランシングとは何か、そしてそれをどのように設定するか

負荷分散とは負荷分散は主に、専用のハードウェア デバイスまたはソフトウェア アルゴリズムによって実現...

MySQLソートにおけるCASE WHENの使用例

序文以前のプロジェクトでは、SQL の CASE WHEN ソート関数が使用されました。ではブログメ...

CentOS 8 に Postfix メール サーバーをインストールして設定する方法

Postfix は、Linux システム上で電子メールをルーティングまたは配信するために使用される無...

MysqlチューニングExplainツールの詳細な説明と実践的な演習(推奨)

MySQL チューニング ツールの詳細な説明と実践的な演習の説明 ツールの紹介の説明 分析例の説明...

Ansible を使用した Nginx のバッチ デプロイのサンプル コード

1.1 nginxインストールパッケージとインストールスクリプトをクライアントにコピーし、スクリプト...

ウェブページを作成するために最もよく使用されるHTMLタグ

1. よく使われるHTMLタグの最適化HTML は Web 編集者にとって基本的なスキルであるべきで...

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

MySQL-8.0.22-winx64のデータベースインストールチュートリアルは参考になります。具体...

dockerでsshd操作を有効にする

まず、docker に openssh-server をインストールします。インストールが完了したら...

ubuntu16.04 で nginx を完全にアンインストールするための関連コマンド

nginx の概要nginx は、無料のオープンソースの高性能 HTTP サーバーおよびリバース プ...

k8s に ingress-nginx をデプロイする手順

目次序文1. Ingressの展開と構成2. httpsを使用する序文k8sクラスタサービスがデプロ...