Vueの組み込みコンポーネントの適用手順の詳細な説明

php中世界最好的语言
リリース: 2018-05-08 14:28:37
オリジナル
2011 人が閲覧しました

今回は、Vue の組み込みコンポーネントの適用手順について詳しく説明します。 Vue の組み込みコンポーネント コンポーネントを適用するときの 注意事項 について、実際のケースを見てみましょう。

公式手順

「メタコンポーネント」を動的コンポーネントとしてレンダリングします。どのコンポーネントがレンダリングされるかは、 is の値によって異なります。

<!-- 动态组件由 vm 实例的属性值 `componentId` 控制 -->
<component :is="componentId"></component>
ログイン後にコピー

詳細については、公式 Web サイトのドキュメントの

ダイナミック コンポーネント

組み込みコンポーネント コンポーネント

シナリオ

を参照してください。ここでは、Vue の構築されたアプリケーションを説明するためにビジネス シナリオが使用されています。 -in コンポーネント コンポーネント。 写真に示すように、ここでは古典的な 登録ページ があり、登録はメール登録と携帯電話登録に分かれています。 ポップアップ ウィンドウの上部に登録タイプを切り替えるためのラベルがあります。登録フォーム情報 メール登録と携帯電話登録では、下部の登録ボタンやその他の操作が異なります。 分析の結果、携帯電話登録インターフェイスと電子メール登録インターフェイスは、中間のフォームの内容が一貫していないことを除いて同じです。

実際のプロジェクトのコード設計では、再利用性と保守性を確保するための実現可能な解決策がいくつかあります。ここでは、vue の組み込みコンポーネント コンポーネントを使用してこれを実現します。

コアコード実装

トップタブを切り替えるとtype値が変わり、対応するフォームコンポーネントも変わります

<template>
 <p>
	<a href="javascript:;" rel="external nofollow" rel="external nofollow" @click.prevent="handleCloseBtnClick"></a>
	<p>
	 <h3>新用户注册</h3>
	 <p>
		<span :class="{active: type === &#39;mobileForm&#39;}" @click="type = mobileForm">手机注册</span>
		<span :class="{active: type === &#39;emailForm&#39;}" @click="type = emailForm">邮箱注册</span>
	 </p>
	</p>
	<component :is="type" ref="form">
	 <button @click="handleRegisterBtnClick">注册</button>
	 <p ><span ><span>注册视为同意</span><a> 《法律条款和隐私说明》</a></span></p>
	 <p><span>已有账号<a href="javascript:;" rel="external nofollow" rel="external nofollow" @click.prevent="handleLoginBtnClick">直接登入>></a></span></p>
	</component>
 </p>
</template>
<script>
 export default {
 	methods: {
		handleRegisterBtnClick () {
		 	this.$refs.form.validateData().then(() => {
				this.$refs.form.getFormData()
			})
		 }
	}
 }
</script>
ログイン後にコピー

mixinsmixing

Vueの組み込みコンポーネントコンポーネントを使用する場合、一般に、実際にレンダリングされるコンポーネントには、同じプロパティ、同じメソッド、同じ初期化および破棄プロセスなど、特定の共通点があります。たとえば、現在のシナリオでは、電子メール フォームと携帯電話フォームの両方に検証メソッド (validateData) とフォーム データを取得するメソッド (getFormData) があります。 この場合、vue が提供するミキシング機能を利用できます。さらなる抽象化 mixins.js

export default {
 methods: {
  validateData() {
   return Promise.resolve()
  },
  getFormData() {
   return {}
  }
 }
}
ログイン後にコピー

email-form.vue

<script>
import minx from './mixins'
export default {
 mixins: [mixins],
 methods: {
  getFormData() {
   return { email: 'example@example.com' }
  }
 }
}
</script>
ログイン後にコピー

カスタムのニーズがある場合は、ミックスインのメソッドをオーバーライドできます。

テーブルの応用

管理バックグラウンドプロジェクトでは、テーブルがよく使用されます。テーブルの td がテキスト、プログレスバー、チェックボックスなどであることを望み、json 設定を渡すことでレンダリングできることを望みます。 vue の組み込みコンポーネント コンポーネントを使用すると、大きな役割を果たすことができます。

例えばこんなテーブルの活用法

<template>
 <vue-table ref="table" :columns="columns" :datum="datum"></vue-table>
</template>
<script>
export default {
  data () {
   return {
    columns: [
     { title: 'ID', width: '30', dataKey: 'id' },
     { title: '进度组件', dataKey: 'progress', render: { type: 'progress2', max: 100, precision: 2 } }
    ],
    datum: [{ id: '1', name: '进度0', progress: 10 }]
   }
  }
 }
</script>
ログイン後にコピー

テーブルへのコンポーネントの実装

<td v-for="column of columns">
	<component :is="`${TYPE_PRE}${columns.render.type}`" :row-data="rowData" :params="columns.render"></component>
</td>
ログイン後にコピー

フォームの応用

管理バックグラウンドのプロジェクトではフォームがよく使われますが、私たちもフォーム上の項目の 1 つがテキスト ボックス、ドロップダウン ボックス、時間選択ボックス、リッチ テキストなどであり、json 構成を渡すことでレンダリングできることを願っています。 Vue の組み込みコンポーネントでも、このような美しいビジョンを実現できます。

たとえば、このようなフォームの使用法

<template>
  <c-form :cells="cells" ref="form">
   <button class="button is-primary" :class="{ &#39;is-disabled&#39;: isSubmitBtnDisabled }" @click.prevent="submit">提交</button>
  </c-form>
</template>
<script>
  export default {
  computed: {
   cells () {
    return [
     {
      field: 'name',
      label: '名称',
      type: 'textfield',
      attrs: { placeholder: '名称' },
      validate: { required: { message: '请输入名称'} }
     },
     {
      field: 'enable',
      label: '启用标志',
      type: 'dropdown',
      extra: {options: [{ label: '启用', value: 1 }, { label: '禁用', value: 2 }] }
     }
    ]
   }
  }
 }
</script>
ログイン後にコピー

フォーム内でコンポーネントを使用する実装

<form>
 <c-form-cell v-for="cell of cellList" :key="cell.field" :field="cell.field">
  <component
	 :is="`${TYPE_PRE}${cell.type}`"
	 :field="cell.field"
	 :attrs="cell.attrs"
	 :extra="cell.extra"
	 :validate="cell.validate"
	 :cells="cell.cells">
  </component>
 </c-form-cell>
</form>
ログイン後にコピー

フォームとテーブルは、VUEベースのバックエンドエンジンのオープンソースプロジェクトに実装されており、スターとフォークへようこそ。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

アプレット共有ページから前のページに戻る手順の詳細な説明

EL コンテキストパラメータを取得する手順の詳細な説明

以上がVueの組み込みコンポーネントの適用手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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