欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Vue內(nèi)置component組件的應(yīng)用場(chǎng)景

 更新時(shí)間:2018年03月27日 13:52:15   作者:nqdy666  
這篇文章主要介紹了淺談Vue內(nèi)置component組件的應(yīng)用場(chǎng)景,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

官方的說(shuō)明

渲染一個(gè)“元組件”為動(dòng)態(tài)組件。依 is 的值,來(lái)決定哪個(gè)組件被渲染。

<!-- 動(dòng)態(tài)組件由 vm 實(shí)例的屬性值 `componentId` 控制 -->
<component :is="componentId"></component>

具體可以官網(wǎng)文檔中的

動(dòng)態(tài)組件

 內(nèi)置的組件component

場(chǎng)景

這里通過(guò)一個(gè)業(yè)務(wù)場(chǎng)景來(lái)闡述vue內(nèi)置component組件的應(yīng)用。 如圖所示,這里展示經(jīng)典注冊(cè)頁(yè)面,注冊(cè)分為郵箱注冊(cè)和手機(jī)注冊(cè),彈窗頂部有標(biāo)簽可以切換注冊(cè)類型,中間是注冊(cè)表單信息,郵箱注冊(cè)和手機(jī)注冊(cè)有著不一樣的表單內(nèi)容,底部是注冊(cè)按鈕以及其他操作。 經(jīng)過(guò)分析手機(jī)注冊(cè)界面與郵箱注冊(cè)除了中間的表單內(nèi)容不一致之外,其他的界面內(nèi)容是一樣的。

實(shí)際項(xiàng)目代碼設(shè)計(jì)中,為了保證復(fù)用性和可維護(hù)性,是會(huì)有一些可行的方案。這里我們采用vue內(nèi)置的component組件來(lái)實(shí)現(xiàn)這一點(diǎn)。

核心代碼實(shí)現(xiàn)

頂部tab切換的時(shí)候,type值發(fā)生改變,對(duì)應(yīng)的表單的組件也發(fā)生了變化

<template>
 <div>
	<a href="javascript:;" rel="external nofollow" rel="external nofollow" @click.prevent="handleCloseBtnClick"></a>
	<div>
	 <h3>新用戶注冊(cè)</h3>
	 <div>
		<span :class="{active: type === 'mobileForm'}" @click="type = mobileForm">手機(jī)注冊(cè)</span>
		<span :class="{active: type === 'emailForm'}" @click="type = emailForm">郵箱注冊(cè)</span>
	 </div>
	</div>
	<component :is="type" ref="form">
	 <button @click="handleRegisterBtnClick">注冊(cè)</button>
	 <div ><span ><span>注冊(cè)視為同意</span><a> 《法律條款和隱私說(shuō)明》</a></span></div>
	 <div><span>已有賬號(hào)<a href="javascript:;" rel="external nofollow" rel="external nofollow" @click.prevent="handleLoginBtnClick">直接登入>></a></span></div>
	</component>
 </div>
</template>
<script>
 export default {
 	methods: {
		handleRegisterBtnClick () {
		 	this.$refs.form.validateData().then(() => {
				this.$refs.form.getFormData()
			})
		 }
	}
 }
</script>

mixins混合

用Vue內(nèi)置component組件情況下,一般實(shí)際被渲染的組件具有一定的共性,比如相同的屬性,相同的方法或者相同的初始化銷毀過(guò)程。比如目前這個(gè)場(chǎng)景中郵箱表單和手機(jī)表單都具有校驗(yàn)方法(validateData)和獲取表單數(shù)據(jù)方法(getFormData)。 這種情況下可以使用vue提供的混合的功能。進(jìn)一步抽離 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>

如果有自定義的需求,可以重寫(xiě)mixins中的方法。

表格的應(yīng)用

在管理后臺(tái)項(xiàng)目中,表格經(jīng)常會(huì)被用到。我們希望表格的td是文本、進(jìn)度條、checkbox等等,且希望通過(guò)傳一個(gè)json配置就可以渲染出。使用vue內(nèi)置的component組件可以起到很贊的作用。

 

比如這樣的一個(gè)table使用方式

<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: '進(jìn)度組件', dataKey: 'progress', render: { type: 'progress2', max: 100, precision: 2 } }
    ],
    datum: [{ id: '1', name: '進(jìn)度0', progress: 10 }]
   }
  }
 }
</script>

table中使用component的實(shí)現(xiàn)

<td v-for="column of columns">
	<component :is="`${TYPE_PRE}${columns.render.type}`" :row-data="rowData" :params="columns.render"></component>
</td>

表單的應(yīng)用

在管理后臺(tái)項(xiàng)目中,表單也經(jīng)常需要用到,我們也同樣希望表單的某一項(xiàng)是文本框,下拉框,時(shí)間選擇框,富文本等等等等,且希望通過(guò)傳一個(gè)json配置就可以渲染出。vue內(nèi)置的component組件可以依然可以實(shí)現(xiàn)這樣一個(gè)美好的愿景。

 

比如這樣的一個(gè)form使用方式

<template>
  <c-form :cells="cells" ref="form">
   <button class="button is-primary" :class="{ 'is-disabled': isSubmitBtnDisabled }" @click.prevent="submit">提交</button>
  </c-form>
</template>
<script>
  export default {
  computed: {
   cells () {
    return [
     {
      field: 'name',
      label: '名稱',
      type: 'textfield',
      attrs: { placeholder: '名稱' },
      validate: { required: { message: '請(qǐng)輸入名稱'} }
     },
     {
      field: 'enable',
      label: '啟用標(biāo)志',
      type: 'dropdown',
      extra: {options: [{ label: '啟用', value: 1 }, { label: '禁用', value: 2 }] }
     }
    ]
   }
  }
 }
</script>

form中使用component的實(shí)現(xiàn)

<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的后臺(tái)引擎 開(kāi)源項(xiàng)目中都有實(shí)現(xiàn),歡迎star和fork。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Vue3實(shí)現(xiàn)一個(gè)簡(jiǎn)單的方位動(dòng)畫(huà)

    基于Vue3實(shí)現(xiàn)一個(gè)簡(jiǎn)單的方位動(dòng)畫(huà)

    這篇文章主要為大家詳細(xì)介紹了如何基于Vue3實(shí)現(xiàn)一個(gè)簡(jiǎn)單的方位動(dòng)畫(huà),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • Vue3項(xiàng)目中的hooks的使用教程

    Vue3項(xiàng)目中的hooks的使用教程

    今天我們稍微說(shuō)一下 vue3 項(xiàng)目中的 hooks 的使用,其實(shí)這個(gè) hooks 呢是和 vue2 當(dāng)中的 mixin 是類似的,學(xué)習(xí)過(guò) vue2 的小伙伴一定對(duì) mixin 一定比較熟悉,快跟隨小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 如何使用el-table實(shí)現(xiàn)純前端導(dǎo)出(適用于el-table任意表格)

    如何使用el-table實(shí)現(xiàn)純前端導(dǎo)出(適用于el-table任意表格)

    我們?nèi)粘W鲰?xiàng)目,特別是后臺(tái)管理系統(tǒng),常常需要導(dǎo)出excel文件,這篇文章主要給大家介紹了關(guān)于如何使用el-table實(shí)現(xiàn)純前端導(dǎo)出的相關(guān)資料,本文適用于el-table任意表格,需要的朋友可以參考下
    2024-03-03
  • Vue實(shí)現(xiàn)todo應(yīng)用的示例

    Vue實(shí)現(xiàn)todo應(yīng)用的示例

    這篇文章主要介紹了Vue實(shí)現(xiàn)todo應(yīng)用的示例,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-02-02
  • 關(guān)于vue中的ajax請(qǐng)求和axios包問(wèn)題

    關(guān)于vue中的ajax請(qǐng)求和axios包問(wèn)題

    大家在vue中,經(jīng)常會(huì)用到數(shù)據(jù)請(qǐng)求問(wèn)題,常用的有vue-resourse、axios ,今天小編給大家介紹下axios的post請(qǐng)求 ,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-04-04
  • 淺談VUE uni-app 基礎(chǔ)組件

    淺談VUE uni-app 基礎(chǔ)組件

    這篇文章主要介紹了uni-app 的基礎(chǔ)組件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Vue響應(yīng)式原理模擬實(shí)現(xiàn)原理探究

    Vue響應(yīng)式原理模擬實(shí)現(xiàn)原理探究

    這篇文章主要介紹了Vue響應(yīng)式原理,響應(yīng)式就是當(dāng)對(duì)象本身(對(duì)象的增刪值)或者對(duì)象屬性(重新賦值)發(fā)生了改變的時(shí)候,就會(huì)運(yùn)行一些函數(shù),最常見(jiàn)的示render函數(shù)
    2022-09-09
  • 如何解決vue在ios微信

    如何解決vue在ios微信"復(fù)制鏈接"功能問(wèn)題

    這篇文章主要介紹了如何解決vue在ios微信"復(fù)制鏈接"功能問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 詳解Vue中使用插槽(slot)、聚類插槽

    詳解Vue中使用插槽(slot)、聚類插槽

    這篇文章主要介紹了Vue中使用插槽(slot)、聚類插槽,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue前端獲取本地IP地址代碼實(shí)例

    vue前端獲取本地IP地址代碼實(shí)例

    再做前端頁(yè)面的時(shí)候,想獲取本地的ip地址,可能是為了和服務(wù)器通信,可能是為了展示,無(wú)論哪種,下面給大家總結(jié)下方法,這篇文章主要給大家介紹了關(guān)于vue前端獲取本地IP地址的相關(guān)資料,需要的朋友可以參考下
    2024-05-05

最新評(píng)論