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

vue3.0透?jìng)鲗傩院褪录氖褂梅绞脚e例

 更新時(shí)間:2024年01月20日 09:39:31   作者:A小博.  
這篇文章主要給大家介紹了關(guān)于vue3.0透?jìng)鲗傩院褪录褂玫南嚓P(guān)資料,透?jìng)鱝ttribute指的是傳遞給一個(gè)組件,卻沒(méi)有被該組件聲明為props或emits的attribute或者v-on事件監(jiān)聽(tīng)器,需要的朋友可以參考下

如何“透?jìng)鲗傩院褪录?rdquo;

父組件在使用子組件的時(shí)候,如何“透?jìng)鲗傩院褪录?rdquo;給子組件呢?

  • 透?jìng)鲗傩院褪录](méi)有在子組件中用propsemits聲明
  • 透?jìng)鲗傩院褪录畛R?jiàn)的如@clickclass、id、style 
  • 當(dāng)子組件只有一個(gè)根元素時(shí),透?jìng)鲗傩院褪录?huì)自動(dòng)添加到該根元素上;如果根元素已有classstyle屬性,它會(huì)自動(dòng)合并                       

組合式API測(cè)試 :

父組件App.vue

<script setup>
import ChipVue from './components/Chip.vue';

function say() {
    alert('Hello')
}
</script>

<template>
    <!-- 透?jìng)鞯膶傩裕╯tyle,class,title)在子組件中并沒(méi)有在 props 聲明 -->
    <!-- 透?jìng)鞯氖录╟lick)在子組件中并沒(méi)有在 emits 聲明 -->
    <ChipVue
        class="rounded"
        style="border: 1px solid blue;"
        title="紙片"
        @click="say"
    />
</template>

子組件 Chip.vue

<template>
    <!-- 
        當(dāng)子組件只有一個(gè)根元素時(shí),透?jìng)鲗傩院褪录?huì)自動(dòng)添加到該根元素上
        如果根元素已有 class 或 style 屬性,它會(huì)自動(dòng)合并
     -->
    <button class="chip" style="box-shadow: 0 0 8px grey;">
        普通紙片
    </button>
</template>

<style>
.chip {
    border: none;
    background-color: rgb(231, 231, 231);
    padding: 8px 15px;
}

.rounded {
    border-radius: 100px;
}
</style>

渲染結(jié)果:

如何禁止“透?jìng)鲗傩院褪录?rdquo;     

  • 當(dāng)子組件只有一個(gè)根元素時(shí),透?jìng)鲗傩院褪录?huì)自動(dòng)添加到該根元素上,那怎么阻止呢?
  • 在選項(xiàng)式 API 中,你可以在組件選項(xiàng)中設(shè)置inheritAttrs: false來(lái)阻止;
  • 在組合式 API 的<script setup>中,你需要一個(gè)額外的<script>塊來(lái)書(shū)寫(xiě)inheritAttrs: false選項(xiàng)聲明來(lái)禁止

組合式API測(cè)試 :

父組件App.vue

<script setup>
import ChipVue from './components/Chip.vue';

function say() {
    alert('Hello')
}
</script>

<template>
    <!-- 透?jìng)鞯膶傩裕╯tyle,class,title)在子組件中并沒(méi)有在 props 聲明 -->
    <!-- 透?jìng)鞯氖录╟lick)在子組件中并沒(méi)有在 emits 聲明 -->
    <ChipVue
        class="rounded"
        style="border: 1px solid blue;"
        title="紙片"
        @click="say"
    />
</template>

子組件 Chip.vue

<script>
export default {
    inheritAttrs: false // 阻止自動(dòng)透?jìng)鹘o唯一的根組件
}
</script>

<!-- 
    在組合式 API 的 <script setup> 中,
    你需要一個(gè)額外的 <script> 塊來(lái)書(shū)寫(xiě) inheritAttrs: false 選項(xiàng)聲明來(lái)禁止 
-->
<script setup></script>

<template>
    <!-- 
        當(dāng)子組件只有一個(gè)根元素時(shí),透?jìng)鲗傩院褪录?huì)自動(dòng)添加到該根元素上
        如果根元素已有 class 或 style 屬性,它會(huì)自動(dòng)合并
     -->
    <button class="chip" style="box-shadow: 0 0 8px grey;">
        普通紙片
    </button>
</template>

<style>
.chip {
    border: none;
    background-color: rgb(231, 231, 231);
    padding: 8px 15px;
}

.rounded {
    border-radius: 100px;
}
</style>

多根元素的“透?jìng)鲗傩院褪录?rdquo; 

多根節(jié)點(diǎn)的組件并沒(méi)有自動(dòng)“透?jìng)鲗傩院褪录?rdquo;的行為,由于Vue不確定要將“透?jìng)鲗傩院褪录?rdquo;透?jìng)鞯侥睦铮晕覀冃枰?code>v-bind="$attrs"來(lái)顯式綁定,否則將會(huì)拋出一個(gè)運(yùn)行時(shí)警告。

組合式API測(cè)試:

父組件App.vue

<script setup>
import ChipVue from './components/Chip.vue';

function say() {
    alert('Hello')
}
</script>

<template>
    <!-- 透?jìng)鞯膶傩裕╯tyle,class,title)在子組件中并沒(méi)有在 props 聲明 -->
    <!-- 透?jìng)鞯氖录╟lick)在子組件中并沒(méi)有在 emits 聲明 -->
    <ChipVue
        class="rounded"
        style="border: 1px solid blue;"
        title="紙片"
        @click="say"
    />
</template>

子組件Chip.vue

<template>
    <!-- 多根節(jié)點(diǎn)的組件并沒(méi)有自動(dòng)“透?jìng)鲗傩院褪录钡男袨?-->
    <button class="chip">
        普通紙片
    </button>
    <hr>
    <button class="chip" v-bind="$attrs">
        普通紙片
    </button>
    <hr>
    <button class="chip" v-bind="$attrs">
        普通紙片
    </button>
</template>
<style>
.chip {
    border: none;
    background-color: rgb(231, 231, 231);
    padding: 8px 15px;
}
.rounded {
    border-radius: 100px;
}
</style>

訪問(wèn)“透?jìng)鲗傩院褪录?rdquo;   

  • 在選項(xiàng)式 API 中,我們可通過(guò)this.$attrs來(lái)訪問(wèn)“透?jìng)鲗傩院褪录?rdquo;
  • 在組合式 API 中的<script setup>中引入useAttrs()來(lái)訪問(wèn)一個(gè)組件的“透?jìng)鲗傩院褪录?rdquo;

組合式API測(cè)試:

父組件App.vue

<script setup>
import ChipVue from './components/Chip.vue';

function say() {
    alert('Hello')
}
</script>

<template>
    <!-- 透?jìng)鞯膶傩裕╯tyle,class,title)在子組件中并沒(méi)有在 props 聲明 -->
    <!-- 透?jìng)鞯氖录╟lick)在子組件中并沒(méi)有在 emits 聲明 -->
    <ChipVue
        class="rounded"
        style="border: 1px solid blue;"
        title="紙片"
        @click="say"
    />
</template>

子組件Chip.vue

<script setup>
import { useAttrs } from 'vue';
// 透?jìng)鞯膶傩院褪录?duì)象
let attrs = useAttrs()
 // 在 JS 中訪問(wèn)透?jìng)鞯膶傩院褪录?
function showAttrs() {
    console.log(attrs)
    console.log(attrs.class)
    console.log(attrs.title)
    console.log(attrs.style)
    attrs.onClick()
}
</script>
<template>
    <button class="chip" v-bind="attrs">
        普通紙片
    </button>
    <hr>
    <h6>{{ attrs }}</h6>
    <ul>
        <li>{{ attrs.title }}</li>
        <li>{{ attrs.class }}</li>
        <li>{{ attrs.style }}</li>
    </ul>
    <button @click="attrs.onClick()">執(zhí)行透?jìng)鞯氖录?lt;/button>
    <hr>
    <button @click="showAttrs">在 JS 中訪問(wèn)透?jìng)鞯膶傩院褪录?lt;/button>
</template>
<style>
.chip {
    border: none;
    background-color: rgb(231, 231, 231);
    padding: 8px 15px;
    margin: 10px;
}
.rounded {
    border-radius: 100px;
}
</style>

注意:

  • 雖然這里的attrs對(duì)象總是反映為最新的“透?jìng)鲗傩院褪录?rdquo;,但它并不是響應(yīng)式的 (考慮到性能因素),你不能通過(guò)偵聽(tīng)器去監(jiān)聽(tīng)它的變化
  • 如果你需要響應(yīng)性,可以使用prop或者你也可以使用onUpdated()使得在每次更新時(shí)結(jié)合最新的attrs執(zhí)行副作用

總結(jié) 

到此這篇關(guān)于vue3.0透?jìng)鲗傩院褪录褂玫奈恼戮徒榻B到這了,更多相關(guān)vue3.0透?jìng)鲗傩院褪录褂脙?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue cli3適配所有端方案的實(shí)現(xiàn)

    vue cli3適配所有端方案的實(shí)現(xiàn)

    這篇文章主要介紹了vue cli3適配所有端方案的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Vue的混合繼承詳解

    Vue的混合繼承詳解

    這篇文章主要介紹了Vue的混合繼承,有需要的朋友可以借鑒參考下,希望能夠有所幫助,希望能夠給你帶來(lái)幫助
    2021-11-11
  • Vue接入高德地圖的完整實(shí)例

    Vue接入高德地圖的完整實(shí)例

    近期在用vue做一個(gè)環(huán)保類(lèi)的項(xiàng)目,要求使用高德地圖,下面這篇文章主要給大家介紹了關(guān)于Vue接入高德地圖的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 深入理解vue中的$set

    深入理解vue中的$set

    這篇文章主要介紹了深入理解vue中的$set,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • vue腳手架搭建項(xiàng)目的兼容性配置詳解

    vue腳手架搭建項(xiàng)目的兼容性配置詳解

    這篇文章主要介紹了vue腳手架搭建項(xiàng)目的兼容性配置詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Vue.js實(shí)現(xiàn)立體計(jì)算器

    Vue.js實(shí)現(xiàn)立體計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)立體計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • vue實(shí)現(xiàn)行列轉(zhuǎn)換的一種方法

    vue實(shí)現(xiàn)行列轉(zhuǎn)換的一種方法

    這篇文章主要介紹了vue實(shí)現(xiàn)行列轉(zhuǎn)換的一種方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • vue函數(shù)@click.prevent的使用解析

    vue函數(shù)@click.prevent的使用解析

    這篇文章主要介紹了vue函數(shù)@click.prevent的使用解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue實(shí)現(xiàn)設(shè)置載入動(dòng)畫(huà)和初始化頁(yè)面動(dòng)畫(huà)效果

    vue實(shí)現(xiàn)設(shè)置載入動(dòng)畫(huà)和初始化頁(yè)面動(dòng)畫(huà)效果

    今天小編就為大家分享一篇vue實(shí)現(xiàn)設(shè)置載入動(dòng)畫(huà)和初始化頁(yè)面動(dòng)畫(huà)效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • 在vue中使用vuex,修改state的值示例

    在vue中使用vuex,修改state的值示例

    今天小編就為大家分享一篇在vue中使用vuex,修改state的值示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11

最新評(píng)論

瑞丽市| 彝良县| 化州市| 巨野县| 璧山县| 永登县| 正定县| 鄢陵县| 息烽县| 安新县| 八宿县| 孙吴县| 明溪县| 广南县| 昭平县| 江口县| 盐边县| 建始县| 济南市| 容城县| 巴塘县| 芜湖县| 澎湖县| 老河口市| 随州市| 英超| 余庆县| 凉城县| 南澳县| 商南县| 丰台区| 南昌市| 裕民县| 博爱县| 景洪市| 延津县| 清水县| 新闻| 磴口县| 霍山县| 石门县|