vue で再利用可能なコンポーネントをカプセル化する方法

亚连
リリース: 2018-06-02 10:28:24
オリジナル
3680 人が閲覧しました

ここで、Vue で再利用可能なコンポーネントをカプセル化する方法に関する記事を共有します。これは非常に参考になるので、皆さんのお役に立てれば幸いです。

今回カプセル化するコンポーネントはトーストコンポーネントを例にします

従来、モバイルUIプラグインを使用する場合、$.toast('表示するコンテンツ')のようなコードを使用していました。 はページ上のコンテンツを表示するために使用され、一定時間後に消えます。

今度は、トーストコンポーネントを自分自身でカプセル化することも試みます。

準備作業: vue-cli スキャフォールディング プロジェクト

まず、関連するファイル ディレクトリのスクリーンショットを見てください:

このパッケージに含まれる主なファイルは、Toast.vue、toast.js、Hello.vue です。主なアイデアは次のとおりです:

① Toast.vue は、使用したいトースト コンポーネントです。

Vue.extend() を使用して、toast.js 内のコンポーネント コンストラクターを拡張し、コンポーネント コンストラクターをインスタンス化します。再利用可能なコンポーネントを作成します。

最後に、toast.js で関数 myToast をエクスポートします。関数 myToast のロジックはコードで説明されています。

③ Hello.vue で関数を呼び出してコンポーネントを表示します。

Toast.vue コード:

<template>
	<p class="toast" v-if="isShow">
		<p class="toast-p">{{ text }}</p>
	</p>
</template>
<script>
export default{
	data(){
		return {
			text:&#39;内容&#39;,
			isShow:true,
			duration:1500
		}
	}
}
</script>
<style>
*{
	margin: 0;
	padding: 0;
}
.toast{
 	position: fixed;
 	left: 50%;
 transform: translate(-50%, 0);
 margin-top: 5rem;
 background: #000000;
 line-height: 0.7rem;
	color: #FFFFFF;
	padding: 0 0.2rem;
	border-radius: 0.2rem;
}
</style>
ログイン後にコピー

Toast.js コード:

import Vue from &#39;vue&#39;; 
import Toast from &#39;@/components/Toast&#39;; //引入组件 
let ToastConstructor = Vue.extend(Toast) // 返回一个“扩展实例构造器” 
 
let myToast = ()=>{ 
 let toastDom = new ToastConstructor({ 
 el:document.createElement(&#39;p&#39;) //将toast组件挂载到新创建的p上 
 }) 
 document.body.appendChild( toastDom.$el ) //把toast组件的dom添加到body里 
} 
export default myToast;
ログイン後にコピー

Hello.vue コード:

<template>
 <p class="hello">
 <button @click="showToast">按钮</button>
 </p>
</template>
<script>
import Vue from &#39;vue&#39;;
import toast from &#39;./js/toast&#39;; //引入toast函数
Vue.prototype.$toast = toast;  //给Vue对象添加$toast方法
export default {
 name: &#39;hello&#39;,
 data () {
 return {
 
 }
 },
 methods:{
 	showToast(){
 		this.$toast();  //现在就可以调用了
 	}
 }
}
</script>
ログイン後にコピー

上記の手順を経ても、実際のトースト効果と実際のトースト効果の間にはまだ違いがあります。この効果は、表示されたコンテンツを一定期間後に非表示にすることです。次に、それをトースト.js から変更し、myToast 関数を書き換えて、2 つの受信パラメーターを設定する必要があります。1 つは表示されたコンテンツ、もう 1 つは表示されたコンテンツです。もう 1 つは表示時間です。

Toast.js の修正コードは次のとおりです。

import Vue from &#39;vue&#39;; 
import Toast from &#39;@/components/Toast&#39;; //引入组件 
let ToastConstructor = Vue.extend(Toast) // 返回一个“扩展实例构造器” 
 
let myToast = (text,duration)=>{ 
 let toastDom = new ToastConstructor({ 
 el:document.createElement(&#39;p&#39;) //将toast组件挂载到新创建的p上 
 }) 
 document.body.appendChild( toastDom.$el ) //把toast组件的dom添加到body里 
 
 toastDom.text = text; 
 toastDom.duration = duration; 
 
 // 在指定 duration 之后让 toast消失 
 setTimeout(()=>{ 
 toastDom.isShow = false; 
 }, toastDom.duration); 
} 
export default myToast;
ログイン後にコピー

次に、これを Hello.vue で呼び出すと、次のようになります。 this.$toast('new content', 2000); 私たちのグループトーストコンポーネントは正常に使用できます!

上記は私があなたのためにまとめたものです。

関連記事:

Vueでのv-forのデータグループ化例

vueでv-forを使用して二次元配列を走査

JavaScriptでimportとrequireを使用してパッケージ化後の原理分析を実装

以上がvue で再利用可能なコンポーネントをカプセル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート