vue作用域插槽詳解、slot、v-slot、slot-scope
vue 插槽slot和具名插槽
作用都是在調(diào)用組件的時(shí)候傳遞一些DOM結(jié)構(gòu)進(jìn)去,
不同點(diǎn)是:具名插槽在傳遞DOM時(shí)需要聲明,傳遞給哪個(gè)slot的名字 name
他們用法簡單不在贅述。
重點(diǎn)說一下作用域插槽 slot-scope 的使用,以及vue2.6.X開始的新語法v-slot
作用域插槽的核心作用是
子組件給父組件傳遞數(shù)據(jù),當(dāng)然也包含上述插槽的能力
老版作用域插槽,
slot="test": 指定插槽的名字用prop:可以隨便定義,表示子組件傳遞過來的值得對(duì)象,可以用解構(gòu)復(fù)制 { row, index }接受
<template slot="test" slot-scope="prop">
{{ prop.wife.a }}
</template>
新版是這樣的,可以說語法更加清晰
v-slot指令直接跟上插槽名稱,prop同上
<template v-slot:test="prop">
{{ prop.wife.b }}
</template>
實(shí)例說明
子組件
這里我定義了多個(gè)具名插槽,并且用父組件傳過來的數(shù)據(jù)嘗試傳遞回去
<template>
<div>
<slot :user="user">
<!-- 默認(rèn)顯示的值,當(dāng)父組件使用次作用域插槽時(shí),會(huì)被覆蓋 -->
{{ user.age }}
</slot>
<slot name="test" :wife='wife'>
{{wife.a}}
</slot>
<slot name="hasProps" :baseData='baseData'>
{{baseData.a_count}}
</slot>
</div>
</template>
<script>
export default {
props: {
baseData: {
type: Object,
default: () => {
return {
a_count: 0,
b_count: 0,
c_count: 0,
d_count: 0,
e_count: 0,
order_amount: 0,
order_num: 0,
resource_num: 0
}
}
}
},
data () {
return {
user: {
name: '張三',
age: 20
},
wife: {
a: '小李',
b: '小韓'
}
}
}
}
</script>
父組件
部分代碼:
其中的baseData,為服務(wù)端異步返回?cái)?shù)據(jù)
<div>
<child>
<template v-slot:default="prop">
{{ prop.user.age }}
</template>
<template v-slot:test="prop">
{{ prop.wife.b }}
</template>
</child>
<child>
<template slot-scope="prop">
{{ prop.user.name }}
</template>
<template slot="test" slot-scope="prop">
{{ prop.wife.a }}
</template>
</child>
<!-- 嘗試解構(gòu)賦值 -->
<child :baseData='baseData'>
<template v-slot:hasProps="{baseData}">
{{ baseData.a_count }}
</template>
</child>
</div>
效果圖
這兩種是先注釋掉所有child里面,所有代碼的效果,前為接口返回前


這兩張是不注釋,前后圖


可以看出,
在vue2.6以上兩種模式都支持,不過官方說3.0就只支持v-slot指令了,
不使用作用域插槽就會(huì)顯示默認(rèn)的值,使用之后就按父組件的來
可以先動(dòng)態(tài)更新數(shù)據(jù)。
使用過element-ui的同學(xué),只要用過表格,我想現(xiàn)在應(yīng)該明白作用域插槽有多大的用處了吧
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
在axios中使用params傳參的時(shí)候傳入數(shù)組的方法
今天小編就為大家分享一篇在axios中使用params傳參的時(shí)候傳入數(shù)組的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09
使用Vite2+Vue3渲染Markdown文檔的方法實(shí)踐
本文主要介紹了Vite2+Vue3渲染Markdown文檔的方法實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的可以了解一下2021-08-08
vue響應(yīng)式更新機(jī)制及不使用框架實(shí)現(xiàn)簡單的數(shù)據(jù)雙向綁定問題
vue是一款具有響應(yīng)式更新機(jī)制的框架,既可以實(shí)現(xiàn)單向數(shù)據(jù)流也可以實(shí)現(xiàn)數(shù)據(jù)的雙向綁定。這篇文章主要介紹了vue響應(yīng)式更新機(jī)制及不使用框架實(shí)現(xiàn)簡單的數(shù)據(jù)雙向綁定問題,需要的朋友可以參考下2019-06-06
使用WebStorm開發(fā)Vue3項(xiàng)目及其他問題詳解
這篇文章主要介紹了在WebStorm中配置Vu3項(xiàng)目的詳細(xì)步驟,還解決了ElementPlus與Sass版本兼容性問題,并提供了詳細(xì)的配置和運(yùn)行步驟,需要的朋友可以參考下2025-02-02
基于ElementUI中Table嵌套實(shí)現(xiàn)多選的示例代碼
這篇文章主要介紹了基于ElementUI中Table嵌套實(shí)現(xiàn)多選的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

