Vue3 カプセル化メッセージプロンプトインスタンス関数
スタイルレイアウトカプセル化メッセージ.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 のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: MySQLクラスタのDockerデプロイメントの実装
Linux には、2 種類のファイル接続があります。1 つは Windows のショートカットに似て...
戦争パッケージを準備する1. 既存のSpringBootプロジェクトを準備し、pomに依存関係を追加...
序文最近、弊社のサーバーがハッカーの攻撃を受け、一部のファイルの属性が変更されたため、ウイルスファイ...
IDEA 2020 で Tomcat を構成する手順は次のとおりです。最初のステップはTomcatを...
目次単一コンテンツ投影マルチコンテンツ投影単一条件のコンテンツ投影アプリ-人物-htmlアプリ担当者...
今日皆さんにお伝えしたいトピックは、「皆さんがよく話題にするテーブル スペースとは一体何でしょうか。...
データベース内のトランザクションとロックを表示するための一般的なステートメントトランザクションの待機...
1. inodeの紹介inode を理解するには、まずファイル ストレージから始める必要があります。...
Msyqlデータベースのインストール、参考までに具体的な内容は次のとおりです。 ①ブラウザでhttp...
序文この章では、基本的な Linux 関数と epoll 呼び出しを使用して、Linux 上で実行で...
ミラーリングも Docker のコアコンポーネントの 1 つです。ミラーリングはコンテナ操作の基盤で...
Cudaがインストールされているかどうかを確認してくださいアナコンダプロンプトに入力nvcc -V...
目次rocketmqイメージを取得する名前rvを作成する単一のブローカーノードを作成するrocket...
この記事の例では、WeChatアプレットでテキストスクロールを実装するための具体的なコードを参考まで...
SQLはテーブル内の重複レコードをすべて見つけます1. テーブルには id と name の 2 つ...