グローバルトーストコンポーネントをカプセル化する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の解凍バージョンのインストール構成に接続し、問題が発生しました

推薦する

HTML_PowerNode Java アカデミーでテーブルを動的に追加する

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <html> <...

line-height=height要素の高さだがテキストが垂直方向に中央揃えされない問題を解決する

まず、行の高さが要素の高さと等しい場合にテキストが垂直方向に中央揃えにならない理由を説明します。実際...

MySQL の 3 つの Binlog 形式の概要と分析

1つ。 Mysql Binlog フォーマットの紹介 Mysql binlog ログには、State...

40 CSS/JSスタイルと機能的な技術処理

1-ドロップダウン選択ボックスのスタイル設定 - ドロップダウン リストを変更します。 2- <...

MySQLユーザー削除バグを解決する

著者が MySQL を使用してユーザーを追加していたところ、ユーザー名が間違って記述されていることに...

Vue3における7種類のコンポーネント通信の詳細

目次1. Vue3コンポーネント通信方式2. Vue3通信の使い方2.1 小道具2.2 $エミット2...

Centos8 で yum を使用して rabbitmq をインストールするチュートリアル

/etc/yum.repos.d/フォルダに入るrabbitmq-erlang.repo ファイルを...

今日と昨日の 0:00 タイムスタンプを取得する MySQL の例

以下のように表示されます。昨日: UNIX_TIMESTAMP(CAST(SYSDATE() AS ...

EChartsマウスイベント処理方法の詳細な説明

イベントとは、クリック、マウスオーバー、ページの読み込み後にトリガーされる読み込みイベントなど、ユー...

JavaScript はパスワードボックスの入力検証を実装します

サーバーの負荷を軽減するために、ユーザーが入力するときにフロントエンドページで簡単な検証を実行する必...

TypescriptとAxiosに基づくインターフェースリクエスト管理の詳細な説明

目次アイデア傍受を要求するレスポンスインターセプションhttpClient.tsを使用してリクエスト...

js を使用して QR コードを生成するサンプル コード

以前、プロジェクトでQRコードをスキャンして情報を表示する機能を開発する必要がありました。インターネ...

自分のブログを構築しながら学んだこと

<br />ブログを始めて 1 年、私はブログの内外で多くのことを個人的に学びました。ま...

Tomcat Nativeを使用してTomcat IO効率を向上させる方法の詳細な説明

目次導入Tomcatへの接続方法APR と Tomcat ネイティブtomcat で APR を使用...

VMware 仮想マシンのインストール win7 オペレーティング システム チュートリアル ダイアグラム

VMwareaのインストールプロセスは説明しませんが、主にwin7イメージをロードする方法を説明しま...