グローバルトーストコンポーネントをカプセル化するVueの完全な例

グローバルトーストコンポーネントをカプセル化するVueの完全な例

序文

最近Vueを体験しました。Toastはフロントエンドでよく使われるコンポーネントです。この記事ではVueがグローバルトーストコンポーネントをカプセル化するプロセスを詳しく紹介します。詳しい紹介を見ていきましょう。

1. vue-cliを使う

1. Toastコンポーネントを定義する

// コンポーネント/トースト

<テンプレート>
  <トランジション名="フェード">
    <div v-show="visible">{{メッセージ}}</div>
  </トランジション>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  データ () {
    戻る {
      表示: 偽、
      メッセージ: ''
    }
  }
}
</スクリプト>

<スタイルスコープ>
div {
  位置: 固定;
  上位: 30%
  左: 50%;
  パディング: 5px 20px;
  色: #fff;
  背景色: #424242;
  境界線の半径: 5px;
  テキスト配置: 中央;
  変換: translate(-50%, -50%);
}
/* Vue アニメーション遷移効果設定 */
.フェード-エンター-アクティブ、
.フェードアウトアクティブ{
  遷移: 不透明度 .5 秒;
}
.fade-enter、.fade-leave-to {
  不透明度: 0;
}
</スタイル>

2. main.jsで設定する

'vue' から Vue をインポートします
'./App.vue' からアプリをインポートします。
'./components/Toast' から Toast をインポートします。

// プラグインオブジェクトを定義する const ToastObj = {
  インストール: 関数 (Vue) {
    // Vue の「サブクラス」コンポーネントを作成する const ToastConstructor = Vue.extend(Toast)
    // このサブクラスのインスタンスを作成し、要素にアタッチします const instance = new ToastConstructor()
    console.log(インスタンス)
    // このインスタンスを動的に作成された要素にマウントし、要素をグローバル構造インスタンスに追加します。$mount(document.createElement('div'))
    document.body.appendChild(インスタンス.$el)

    // コンポーネントを制御するために、Vue のプロトタイプ チェーンにメソッドを登録します。Vue.prototype.$toast = (msg,duration = 1500) => {
      インスタンス.メッセージ = メッセージ
      インスタンス.visible = true
      タイムアウトを設定する(() => {
        インスタンス.visible = false
      }、 間隔)
    }
  }
}
Vue.use(ToastObj)

Vue.config.productionTip = false

新しいVue({
  レンダリング: h => h(App),
}).$mount('#app')

3. 他のコンポーネントでの使用

<テンプレート>
  <div class="hello">
    <h1>{{ メッセージ }}</h1>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: 'HelloWorld',
  データ: () => {
    戻る {
      メッセージ: 'HelloWord'
    }
  },
  マウントされた(){
  	//トースト コンポーネントを使用します。this.$toast('コンポーネントが正常にマウントされました')
  }
}
</スクリプト>

2. vue-cliなし

vue-cli の助けを借りれば、コンポーネントのインポートとエクスポートは簡単ですが、ビルド ツールの助けがなければ、他の方法が必要になります。

1. トーストコンポーネントを登録する

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
  <メタ文字セット="UTF-8">
  <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
  <title>ドキュメント</title>
  <script src="./static/vue/vue.min.js"></script>
</head>
<本文>
  <div id="アプリ">
    <私のボタン></私のボタン>
  </div>
  <div id="トースト"></div>
  <スクリプト>
    // トーストのグローバルコンポーネントを定義する const Toast = Vue.component('toast', {
      データ() {
        戻る {
          isShow: false、
          メッセージ: 'グローバルプロンプト'、
          ラッパースタイル: {
            位置: '固定'、
            上: '20%'、
            左: '50%'、
            zインデックス: 10000,
            パディング: '6px 12px',
            背景色: '#424242',
            境界線の半径: '5px',
            変換: 'translate(-50%, -50%)'
          },
          テキストスタイル: {
            色: '#fff',
            フォントサイズ: '14px'
          }
        }
      },
      テンプレート: `<div v-show="isShow" :style="wrapperStyle">
                  <span :style="textStyle">{{ メッセージ }}</span>
                </div>`
    })

2. トーストプラグインを登録する

// プラグインオブジェクトを定義する const ToastObj = {
  インストール: 関数 (Vue) {
    // トーストコンポーネントインスタンスを作成し、要素にアタッチします。const instance = new Toast()
    //このインスタンスをDOMインスタンスにマウントします。$mount('#toast')

    // コンポーネントを制御するために、Vue のプロトタイプ チェーンにメソッドを登録します。Vue.prototype.$toast = ({message,duration = 2000} = {}) => {
      インスタンス.メッセージ = メッセージ
      インスタンス.isShow = true

      タイムアウトを設定する(() => {
        インスタンス.isShow = false
      }、 間隔)
    }
  }
}
//トーストプラグインを登録する Vue.use(ToastObj)

3. 他のコンポーネントでの使用

    Vue.component('my-button', {
      データ() {
        戻る {
          ラッパースタイル: {
            幅: '70px'、
            パディング: '20px',
            背景色: '緑'
          },
          テキストスタイル: {
            色: '#fff',
            フォントサイズ: '16px'
          }
        }
      },
      メソッド: {
        ハンドルクリック() {
          this.$トースト({
            メッセージ: 「クリックしました」
          })
        }
      },
      テンプレート: `<div :style="wrapperStyle" @click="handleClick">
                  <span :style="textStyle">プロンプトをクリック</span>
                </div>`
    })

    定数vm = 新しいVue({
      el: '#app'
    })
  </スクリプト>
</本文>
</html>

要約する

これで、グローバル トースト コンポーネントの Vue カプセル化に関するこの記事は終了です。グローバル トースト コンポーネントの Vue カプセル化に関するより関連性の高い記事については、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueでカプセル化されたコンポーネントはグローバルに登録され参照されます

<<:  Alibaba Cloudのセキュリティルール設定の詳細な説明

>>:  PythonはデータベースMySQLの解凍バージョンのインストール構成に接続し、問題が発生しました

推薦する

データページング効果を実現する js オブジェクト

この記事の例では、データのページング効果を実現するためのjsオブジェクトの具体的なコードを参考までに...

vue.config.js パッケージ最適化構成

Baiduの情報は多様すぎて目が回ります。心配しないでください。私はあなたのためにそれを体験しました...

Gokudōゲームにおけるフロントエンド知識のまとめ

背景日本語を学び始めた当初は、日本語の50音を覚えるのは簡単ではなく、特にカタカナを覚えるのは困難で...

MySQL 8 の新機能: 非表示のインデックス

背景インデックスは諸刃の剣です。クエリ速度は向上しますが、DML 操作も遅くなります。結局のところ、...

ウェブページ入力ボックスのスタイルトリガー効果

<br />この例では、主に onblur と onFocus という 2 つのパラメー...

CSS3でアニメーションを実装する3つの方法

これは、面接者の CSS に関する基本的な知識をテストするものです。 CSSでアニメーションを実装す...

MySQL の pid とソケットの詳細な説明

目次1. pidファイルの紹介2.ソケットファイルの紹介要約:ソケット ファイル: Unix ドメイ...

VueでTypescriptの設定手順を使用する

目次1. TypeScriptが古いVueプロジェクトに導入されるVue+Typescript プロ...

CSSスタイルとセレクターの使い方

HTML で CSS を使用する 3 つの方法: 1. インラインスタイル: 要素のスタイル属性を通...

幅と高さが可変の要素を中央に配置するための CSS ソリューション

1. 水平中央公開コード: html: <div class="parent&quo...

入力テキストボックスの長さをコンテンツに応じて変更する方法

初め:コードをコピーコードは次のとおりです。 <input type="text&q...

ES6 の Set および WeakSet コレクションの詳細な説明

目次セットは値が重複しない特別なコレクションです。セットコレクション基本API独自の価値判断セットを...

HTML マークアップ言語 - フォーム

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

Centos7 Zabbix3.4 メールアラーム設定(メール内容がxx.bin添付ファイルになる問題の解決)

目次1. 監視Linuxホストを追加する2. メールボックスを設定する1. 監視Linuxホストを追...

vue3 を使用してカウント関数コンポーネントのカプセル化例を実装する

目次序文1. カプセル化の重要性2. どのようにカプセル化しますか? 1. アイデア2. 準備2. ...