动态组件_插槽
**
組件進(jìn)階 - 動(dòng)態(tài)組件
**
**
組件進(jìn)階-props校驗(yàn)
**
props校驗(yàn)
普通格式: props: [“propA”, “propB”]。沒有類型檢查
高階格式:
默認(rèn)返回一個(gè)工廠函數(shù),每次調(diào)用都會(huì)返回一個(gè)新的 數(shù)組結(jié)果
需求: 完成一個(gè)注冊(cè)功能頁面, 2個(gè)按鈕切換, 額外封裝兩個(gè)組件:一個(gè)填寫注冊(cè)信息, 一個(gè)填寫用戶簡介信息
目標(biāo): 多個(gè)組件使用同一個(gè)掛載點(diǎn),并可以動(dòng)態(tài)切換,這就是動(dòng)態(tài)組件
根組件 ├── App.vue └── components├── UserName.vue # 用戶名和密碼輸入框└── UserInfo.vue # 人生格言和自我介紹框 <component :is="comName"></component>在父組件App.vue中使用
<template><div><button @click="comName = 'UserName'">賬號(hào)密碼填寫</button><button @click="comName = 'UserInfo'">個(gè)人信息填寫</button><p>下面顯示注冊(cè)組件:</p><div style="border: 1px solid red"><!-- vue內(nèi)置的組件component, 可以動(dòng)態(tài)顯示組件 --><component :is="comName"></component></div></div> </template><script> import UserName from "./UserName"; import UserInfo from "./UserInfo"; export default {data() {return {comName: "UserName",};},components: {UserName,UserInfo,}, }; </script>注意
● is只能是動(dòng)態(tài)屬性=》:is=“組件注冊(cè)后的標(biāo)簽名字符串或data變量”
● 不能直接拿注冊(cè)標(biāo)簽名賦值使用
小結(jié)
vue內(nèi)置component組件, 配合is屬性, 設(shè)置要顯示的組件標(biāo)簽名字
**
組件進(jìn)階-keep-alive組件
**
掌握組件緩存的使用
背景
演示1: 可以先給UserName.vue和UserInfo.vue 注冊(cè)created和destroyed生命周期事件, 觀察創(chuàng)建和銷毀過程
演示2: 使用keep-alive內(nèi)置的vue組件, 讓動(dòng)態(tài)組件緩存而不是銷毀
補(bǔ)充生命周期:
● activated - 激活 缺點(diǎn): 消耗內(nèi)存空間
● deactivated - 失去激活狀態(tài)
小結(jié)
keep-alive可以提高組件的性能, 內(nèi)部包裹的標(biāo)簽不會(huì)被銷毀和重新創(chuàng)建, 觸發(fā)激活和非激活的生命周期方法
**
組件進(jìn)階-keep-alive組件-指定緩存
**
目標(biāo)
掌握keep-alive的include屬性的用法
語法
注意:
**
組件進(jìn)階-具名插槽
**
目標(biāo)
掌握具名插槽的使用
背景
當(dāng)一個(gè)組件內(nèi)有2處以上需要外部傳入標(biāo)簽的地方
格式
使用:
● <template #xxx></template>; ● <template v-slot:xxx></template>
小結(jié)
3. slot有可以設(shè)置多個(gè)
4. 定義組件時(shí):slot的name屬性起插槽名
5. 使用組件時(shí), template配合#插槽名傳入具體html標(biāo)簽或組件
**
案例:
**
插槽的案例-升級(jí)折疊面板
需求
允許面板中傳入不同的內(nèi)容
示例
改造之前的折疊面板案例, 想要實(shí)現(xiàn)不同內(nèi)容顯示, 我們把折疊面板里的Pannel組件, 添加組件插槽方式
參考代碼
定義組件
注意點(diǎn)
插槽里面的兩種方式:
1–默認(rèn)的插槽
在父組件里面的子組件標(biāo)簽中間 添加結(jié)構(gòu)樣式 在子組件的template里面設(shè)置
默認(rèn)的內(nèi)容 接收
2— 定義名字浮動(dòng)方式
父組件里面
**
自定義指令-基本使用
**
自定義指令文檔(了解)
除了核心功能默認(rèn)內(nèi)置的指令 (v-model 和 v-show)等,Vue 也允許注冊(cè)自定義指令=》 v-xxx
html+css+js的復(fù)用的主要形式是組件
你需要對(duì)普通 DOM 元素進(jìn)行底層操作,這時(shí)候就會(huì)用到自定義指令
作用
擴(kuò)展標(biāo)簽額外的功能
自定義指令-定義方式
示例 自動(dòng)獲取焦點(diǎn)
<template> <div> <input type="text" v-focus /> </div> </template> ? <script> export default { // 注冊(cè) directives: { focus: { // 自定義指令名 inserted(el){ // 固定配置項(xiàng) - 當(dāng)指令插入到標(biāo)簽自動(dòng)觸發(fā)此函數(shù) el.focus() } } } } </script>**
自定義指令-傳值和更新
**
目標(biāo): 使用自定義指令, 傳入一個(gè)值
需求: 定義color指令-傳入一個(gè)顏色, 給標(biāo)簽設(shè)置文字顏色
main.js定義處修改一下
Direct.vue處更改一下
<p v-color="theColor" @click="changeColor">使用v-color指令控制顏色, 點(diǎn)擊變藍(lán)</p><script>data() {return {theColor: "red",};},methods: {changeColor() {this.theColor = 'blue';},}, </script>總結(jié)
- 上一篇: Linux网络编程(三)
- 下一篇: 汽车之家和易车该如何走下去?