vue3?v-bind="$attrs"繼承組件全部屬性的解決方案
vue3 v-bind=“$attrs” 繼承組件全部屬性
當(dāng)我們?cè)诙畏庋belement-plus組件時(shí),常常遇到其當(dāng)中組件的屬性過(guò)多要不要每個(gè)都拎出來(lái)寫一遍的情況,其實(shí)沒(méi)必要,v-bind="$attrs"很好的解決了這個(gè)問(wèn)題,比如我們封裝一下時(shí)間選擇組件代碼如下:
父組件中使用:
<template> <div> <m-choose-time :startOptions="startOptions" @startChange="startChange" @endChange="endChange"> </m-choose-time> </div> </template> <script lang='ts' setup> let startOptions = { size: 'mini', clearable: false } </script> <style lang='scss' scoped> </style>
子組件代碼:
<template> <div style="display: flex;"> <div style="margin-right: 20px;"> <el-time-select v-model="startTime" :placeholder="startPlaceholder" :start="startTimeStart" :step="startStep" :end="startTimeEnd" v-bind="$attrs.startOptions" ></el-time-select> </div> <div> <el-time-select v-model="endTime" :min-time="startTime" :placeholder="endPlaceholder" :start="endTimeStart" :step="endStep" :end="endTimeEnd" :disabled="endTimeDisabled" v-bind="$attrs.endOptions" ></el-time-select> </div> </div> </template> <script lang='ts' setup> import {ref, watch} from 'vue' let props = defineProps({ // 開(kāi)始時(shí)間的占位符 startPlaceholder: { type: String, default: '請(qǐng)選擇開(kāi)始時(shí)間' }, // 結(jié)束時(shí)間的占位符 endPlaceholder: { type: String, default: '請(qǐng)選擇結(jié)束時(shí)間' }, // 開(kāi)始時(shí)間的開(kāi)始選擇 startTimeStart: { type: String, default: "08:00" }, // 開(kāi)始時(shí)間的步進(jìn) startStep: { type: String, default: "00:30" }, // 開(kāi)始時(shí)間的結(jié)束選擇 startTimeEnd: { type: String, default: "24:00" }, // 結(jié)束時(shí)間的開(kāi)始選擇 endTimeStart: { type: String, default: "08:00" }, // 結(jié)束時(shí)間的步進(jìn) endStep: { type: String, default: "00:30" }, // 結(jié)束時(shí)間的結(jié)束選擇 endTimeEnd: { type: String, default: "24:00" }, }) let emits = defineEmits(['startChange', 'endChange']) // 開(kāi)始時(shí)間 let startTime = ref<string>('') // 結(jié)束時(shí)間 let endTime = ref<string>('') // 是否禁用結(jié)束時(shí)間 let endTimeDisabled = ref<boolean>(true) // 監(jiān)聽(tīng)開(kāi)始時(shí)間的變化 watch(() => startTime.value, val => { if (val === '') { endTime.value = '' endTimeDisabled.value = true } else { endTimeDisabled.value = false // 給父組件分發(fā)事件 emits('startChange', val) } }) // 監(jiān)聽(tīng)結(jié)束時(shí)間的變化 watch(() => endTime.value, val => { if (val !== '') { emits('endChange', { startTime: startTime.value, endTime: val }) } }) </script> <style lang='scss' scoped> </style>
如上例所示,props中我們只是封裝了el-time-select中的部分屬性,我們?cè)谧咏M件中用的時(shí)候可以傳個(gè)startOptions里面有size和clearable屬性,在封裝是利用v-bind="$attrs.startOptions"就可以很好的繼承啦。當(dāng)然如果不傳startOptions,直接使用v-bind="attrs"是可以繼承所有屬性的
到此這篇關(guān)于vue3 v-bind=“$attrs“ 繼承組件全部屬性的文章就介紹到這了,更多相關(guān)vue3 v-bind=“$attrs“ 繼承組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue-router history模式服務(wù)器端配置過(guò)程記錄
vue路由有hash和history兩種模式,這篇文章主要給大家介紹了關(guān)于vue-router history模式服務(wù)器端配置的相關(guān)資料,需要的朋友可以參考下2021-06-06詳解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
這篇文章主要介紹了詳解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11vue點(diǎn)擊Dashboard不同內(nèi)容 跳轉(zhuǎn)到同一表格的實(shí)例
這篇文章主要介紹了vue點(diǎn)擊Dashboard不同內(nèi)容 跳轉(zhuǎn)到同一表格的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Vue2.0 從零開(kāi)始_環(huán)境搭建操作步驟
下面小編就為大家?guī)?lái)一篇Vue2.0 從零開(kāi)始_環(huán)境搭建操作步驟。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06詳解auto-vue-file:一個(gè)自動(dòng)創(chuàng)建vue組件的包
這篇文章主要介紹了auto-vue-file:一個(gè)自動(dòng)創(chuàng)建vue組件的包,需要的朋友可以參考下2019-04-04Element的穿梭框數(shù)據(jù)量大時(shí)點(diǎn)擊全選卡頓的解決方案
本文主要介紹了Element的穿梭框數(shù)據(jù)量大時(shí)點(diǎn)擊全選卡頓的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10vue中關(guān)于template報(bào)錯(cuò)等問(wèn)題的解決
這篇文章主要介紹了vue中關(guān)于template報(bào)錯(cuò)等問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04vue中watch監(jiān)聽(tīng)路由傳來(lái)的參數(shù)變化問(wèn)題
這篇文章主要介紹了vue中watch監(jiān)聽(tīng)路由傳來(lái)的參數(shù)變化,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07vue3+arco design通過(guò)動(dòng)態(tài)表單方式實(shí)現(xiàn)自定義篩選功能
這篇文章主要介紹了vue3+arco design通過(guò)動(dòng)態(tài)表單方式實(shí)現(xiàn)自定義篩選,本文主要實(shí)現(xiàn)通過(guò)動(dòng)態(tài)表單的方式實(shí)現(xiàn)自定義篩選的功能,用戶可以自己添加篩選的項(xiàng)目,篩選條件及篩選內(nèi)容,需要的朋友可以參考下2024-05-05