最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue中對(duì)組件二開解決思路以及方案

 更新時(shí)間:2023年04月17日 09:11:41   作者:程序不了猿  
這篇文章主要介紹了Vue中對(duì)組件二開解決思路以及方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧

一、背景

在對(duì)antdv、element、自定義組件二開過(guò)程中,最困擾的問(wèn)題如下:??

  • 組件那么多屬性我如何傳遞,props? v-model?屬性多的話透?jìng)饔悬c(diǎn)呆。
  • 組件提供的多個(gè)事件怎么調(diào)用?emit? 事件多的情況下代碼冗余。
  • 組件提供的方法怎么調(diào)用?ref 父子間并不能透?jìng)?。但這個(gè)在react里很方便。
  • solt怎么處理,一個(gè)個(gè)自己定義透?jìng)鲉幔孔饔糜虿宀?、具名插槽很多的話怎么處理?/li>

這個(gè)是準(zhǔn)備去做二開UI組件的時(shí)候,遇到的幾個(gè)不能一下子就能打開思路的問(wèn)題;

二、解決思路以及方案

前兩個(gè)問(wèn)題比較簡(jiǎn)單,利用$attts$listeners兩個(gè)組件屬性就能解決。

a. $attts :繼承所有的父組件屬性 (除了 prop 傳遞的屬性、class 和 style ) **,一般用在子組件的子元素上;

b $listeners:它是一個(gè)對(duì)象,里面包含了作用在這個(gè)組件上的所有監(jiān)聽(tīng)器,你就可以配合v-on="$listeners"將所有的事件監(jiān)聽(tīng)器指向這個(gè)組件的某個(gè)特定的子元素。(相當(dāng)于子組件繼承父組件的事件)

<templete>
  <div>
    <div>{{ text }}</div>
    <el-input v-bind="$attts" v-on="$listeners" placeholder="請(qǐng)輸入內(nèi)容"></el-input>
  </div>
</templete>
<script>
export default {
  props:{
    text:String,
  }
  mounted(){
    console.log(this.$attrs)
  }
}
</script>
<templete>
  <div>
    <child type="text" v-model="input" text @blur="onBlur"></div>
  </div>
</templete>
<script>
export default {
  data() {
    return {
      input: '',
      text:'子組件的props'
    }
  },
  methods:{
    onBlur(){
      // ...
    }
  }
}
</script>

關(guān)于調(diào)用子組件中的方法(子組件拿不到父組件的ref),網(wǎng)上也看到了很多方案,從便捷度來(lái)說(shuō),我個(gè)人更傾向于將方法直接綁定在組件實(shí)例上。

tips:** 善用object中的entries**,返回Array<[key:string, value:any?]>類型的二維數(shù)組

<templete>
  <div>
    <child ref="childRef" type="text" v-model="input" text @blur="onBlur"></div>
  </div>
</templete>
<script>
export default {
  data() {
    return {
      input: '',
      text:'子組件的props'
    }
  },
  mounted(){
    console.log(this.$ref.childRef)
  },
  methods:{
    onBlur(){
      // ...
    }
  }
}
</script>
<templete>
  <div>
    <div>{{ text }}</div>
    <el-input ref="inpRef" v-bind="$attts" v-on="$listeners" placeholder="請(qǐng)輸入內(nèi)容"></el-input>
  </div>
</templete>
<script>
export default {
  props:{
    text:String,
  }
  mounted(){
    console.log(this.$attrs)
    // 綁定ref到組件實(shí)例上
    const entries = Object.entries(this.$ref.inpRef)
    for(const [key, value] of entries){
      this[key] = value;
  	}
}
</script>

插槽主要用的$slots,這邊對(duì)作用域插槽數(shù)據(jù)做了兜底,不然會(huì)報(bào)錯(cuò);

tips: 在vue模版中遍歷對(duì)象**,會(huì)拿到* value、name*兩個(gè)值

<templete>
  <div>
    <child ref="childRef" type="text" v-model="input" text @blur="onBlur">
    	<template slot="prepend">Http://</template>
    </child>
  </div>
</templete>
<script>
export default {
  data() {
    return {
      input: '',
      text:'子組件的props'
    }
  },
  mounted(){
    console.log(this.$ref.childRef)
  },
  methods:{
    onBlur(){
      // ...
    }
  }
}
</script>
<templete>
  <div>
    <div>{{ text }}</div>
    <el-input ref="inpRef" v-bind="$attts" v-on="$listeners" placeholder="請(qǐng)輸入內(nèi)容">
      <templete v-for="(value, name) in $slot" #[name]="slotData">
        <slot :name="name" v-bind = "slotData || {}"></slot>
      </templete>
    </el-input>
  </div>
</templete>
<script>
export default {
  props:{
    text:String,
  }
  mounted(){
    console.log(this.$attrs)
    // 綁定ref到組件示例上
    const entries = Object.entries(this.$ref.inpRef)
    for(const [key, value] of entries){
      this[key] = value;
  	}
}
</script>

到此這篇關(guān)于Vue中對(duì)組件二開解決思路以及方案的文章就介紹到這了,更多相關(guān)Vue組件二開內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談ElementUI el-select 數(shù)據(jù)過(guò)多解決辦法

    淺談ElementUI el-select 數(shù)據(jù)過(guò)多解決辦法

    下拉框的選項(xiàng)很多,上萬(wàn)個(gè)選項(xiàng)甚至更多,這個(gè)時(shí)候如果全部把數(shù)據(jù)放到下拉框中渲染出來(lái),瀏覽器會(huì)卡死,體驗(yàn)會(huì)特別不好,本文主要介紹了ElementUI el-select 數(shù)據(jù)過(guò)多解決辦法,感興趣的可以了解一下
    2021-09-09
  • 解決在el-dialog中無(wú)法正確獲取DOM的問(wèn)題

    解決在el-dialog中無(wú)法正確獲取DOM的問(wèn)題

    這篇文章主要介紹了解決在el-dialog中無(wú)法正確獲取DOM的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vuex的輔助函數(shù)該如何使用

    vuex的輔助函數(shù)該如何使用

    vue通過(guò)輔助函數(shù)mapState、mapActions、mapMutations,把vuex.store中的屬性映射到vue實(shí)例身上,這樣在vue實(shí)例中就能訪問(wèn)vuex.store中的屬性了,對(duì)于操作vuex.store就很方便了,本文具體的介紹下這些輔助函數(shù)的使用方法
    2021-06-06
  • vue2.0路由切換后頁(yè)面滾動(dòng)位置不變BUG的解決方法

    vue2.0路由切換后頁(yè)面滾動(dòng)位置不變BUG的解決方法

    下面小編就為大家分享一篇vue2.0路由切換后頁(yè)面滾動(dòng)位置不變BUG的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • vue如何通過(guò)id從列表頁(yè)跳轉(zhuǎn)到對(duì)應(yīng)的詳情頁(yè)

    vue如何通過(guò)id從列表頁(yè)跳轉(zhuǎn)到對(duì)應(yīng)的詳情頁(yè)

    這篇文章主要介紹了vue如何通過(guò)id從列表頁(yè)跳轉(zhuǎn)到對(duì)應(yīng)的詳情頁(yè) ,需要的朋友可以參考下
    2018-05-05
  • Vue中使用vue-pdf嵌入和展示PDF文件

    Vue中使用vue-pdf嵌入和展示PDF文件

    在vue中實(shí)現(xiàn)在線預(yù)覽PDF文件我們可以使用vue-pdf來(lái)實(shí)現(xiàn),下面這篇文章主要介紹了Vue中使用vue-pdf嵌入和展示PDF文件的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • 前端+接口請(qǐng)求實(shí)現(xiàn)vue動(dòng)態(tài)路由

    前端+接口請(qǐng)求實(shí)現(xiàn)vue動(dòng)態(tài)路由

    在Vue應(yīng)用中,結(jié)合前端和后端接口請(qǐng)求實(shí)現(xiàn)動(dòng)態(tài)路由,可根據(jù)用戶權(quán)限動(dòng)態(tài)生成路由,提高安全性與靈活性,本文就來(lái)介紹一下前端+接口請(qǐng)求實(shí)現(xiàn)vue動(dòng)態(tài)路由,感興趣的可以了解一下
    2024-09-09
  • 解讀計(jì)算屬性和watch監(jiān)聽(tīng)的區(qū)別及說(shuō)明

    解讀計(jì)算屬性和watch監(jiān)聽(tīng)的區(qū)別及說(shuō)明

    計(jì)算屬性是基于它們的依賴進(jìn)行緩存的,只有在它的相關(guān)依賴發(fā)生改變時(shí)才會(huì)重新求值,而watch則是一個(gè)更為通用的監(jiān)聽(tīng)器,它可以在數(shù)據(jù)變化時(shí)執(zhí)行異步操作或開銷較大的操作
    2025-01-01
  • vue中同步方法的實(shí)現(xiàn)

    vue中同步方法的實(shí)現(xiàn)

    這篇文章主要介紹了vue中同步方法的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue.js上下滾動(dòng)加載組件的實(shí)例代碼

    Vue.js上下滾動(dòng)加載組件的實(shí)例代碼

    本篇文章主要介紹了Vue.js上下滾動(dòng)加載組件的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07

最新評(píng)論

五家渠市| 宜都市| 会理县| 修水县| 桓仁| 光泽县| 蓝田县| 祁阳县| 靖远县| 关岭| 杭州市| 翼城县| 都江堰市| 齐齐哈尔市| 四会市| 滦南县| 稷山县| 天津市| 泽普县| 呼图壁县| 松滋市| 大理市| 芜湖市| 凭祥市| 唐河县| 连山| 墨竹工卡县| 慈利县| 黎城县| 黑龙江省| 彭州市| 丁青县| 樟树市| 扬中市| 天等县| 平塘县| 香格里拉县| 秦皇岛市| 芒康县| 岱山县| 泰来县|