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

推薦する

sqlとmysqlの違いは何ですか?

SQL とは何ですか? SQL はデータベースを操作するために使用される言語です。 SQL はすべ...

React+Ant Design開発環境をセットアップするための実装手順

基礎1. スキャフォールディングを使用してプロジェクトを作成し、開始する1.1 足場を設置する: n...

MyCat を使用して Linux で MySQL マスター/スレーブの読み取り/書き込み分離を実装する方法

目次Linux - MyCat を使用して MySQL マスター スレーブの読み取り書き込み分離を実...

Web インタビュー Vue カスタム コンポーネントと呼び出しメソッド

輸入:プロジェクトの要件により、同じコードの一部をコンポーネントにカプセル化し、必要な場所にインポー...

ウェブデザインにおけるカラーマッチングの優れた例30選

本日は、色彩の応用に関する優れた事例を 30 件集めて、皆さんにご紹介したいと思います。これらの事例...

Vue Routerはバックグラウンドデータに応じて異なるコンポーネントをロードします

目次実際のプロジェクトで遭遇する要件実装が間違っているところもある私は個人的に、実装するより良い方法...

MySQL を解凍してインストールおよび完全に削除する方法の詳細なグラフィック説明

1. MySQLをインストールする(1)ダウンロードしたMySQLの圧縮ファイルをMySQLをインス...

MySQL innodb_autoinc_lock_mode について

innodb_autoinc_lock_mode パラメータは、auto_increment 列を持...

Html/Css (初心者が最初に読むべきガイド)

1. Web標準の意味を理解する - なぜWeb標準を採用するのか***** コンテンツとスタイル...

MySQL 4G メモリ サーバー構成の最適化

会社のウェブサイトのアクセス数が増えてくると(1日10万PV以上)、当然MySQLがボトルネックにな...

WHMCS V7.4.2 グラフィカル インストール チュートリアル

1. はじめにWHMCS は、ユーザー管理、請求書の支払い、ヘルプ サービスなど、オンライン ビジネ...

mysqlは、現在の時刻が開始時刻と終了時刻の間にあるかどうかを判断し、開始時刻と終了時刻が空であることが許可されます。

目次要件: 進行中のアクティビティ データを照会する次のSQLクエリは、上記の4つの要件を満たし、タ...

MySQL 関数インデックス最適化ソリューション

MySQL を使用する場合、多くの開発者は一部の列に対して関数計算を実行することが多く、その結果、イ...

MySQLにログインする際のエラー「ERROR 1045 (28000)」を解決する方法

今日はサーバーにログインして、データベース内のいくつかのものを変更する準備をしました。しかし、パスワ...

Ubuntu 18.0.4 は mysql をインストールし、エラー 1698 (28000): ユーザー ''root''@''localhost'' のアクセスが拒否されましたを解決します

序文最近 Linux を学び、その後 Win から Ubuntu に変更しました。以前インストールし...