前言
接上一個(gè)開發(fā)遇到問題的續(xù)作 主要怕遺忘同時(shí)希望幫助到大家
1.我在使用某個(gè)公共組件時(shí),當(dāng)父組件傳值后,子組件中 watch 無法[監(jiān)聽]到變化,導(dǎo)致無法對(duì)數(shù)據(jù)進(jìn)行處理。
據(jù)父組件中的數(shù)據(jù)的獲取方式,出現(xiàn)這種情況分為兩種
1. 數(shù)據(jù)是通過直接賦值,也就是同步獲取的
2. 數(shù)據(jù)通過異步獲取
情況1: 父組件將數(shù)據(jù)綁定傳入后,在子組件的子組件 created 中能接收到數(shù)據(jù),但是無法觸發(fā) watch 監(jiān)聽,原因是就是當(dāng)值第一次綁定的時(shí)候,不會(huì)執(zhí)行監(jiān)聽函數(shù)。
解決方法: 在watch 監(jiān)聽中 添加 immediate 屬性,值為 true。這樣在最初綁定值的時(shí)候也執(zhí)行函數(shù)
name: {
handler(newValue, oldValue) {},
immediate: true
}
情況2: 加載渲染的時(shí)候,請(qǐng)求是一個(gè)異步的操作,子組件在拿到數(shù)據(jù)前就渲染了,子組件 watch 沒有監(jiān)控到值得變化
解決方法:父組件使用v-if,當(dāng)請(qǐng)求結(jié)束之后,改變v-if內(nèi)變量的值,加載子組件。
2.如果父元素固定寬高 子元素img想要自適應(yīng)怎么處理
.imgBox { // 父元素 div標(biāo)簽 固定寬高 設(shè)置居中
width: 238px;
height: 145px;
text-align: center;
.zoomImage {// 子元素寬高自適應(yīng) 并給上最大寬高100%
width: auto;
height: auto;
max-width: 100%;
max-height: 100%;
}
}
3.element 的el-dialog 浮層嵌套,第二次彈出的關(guān)閉后第一次彈出的會(huì)被遮住
解決方式:
父級(jí)浮層設(shè)置:modal-append-to-body="false"和:append-to-body="true" 屬性,同時(shí)在子級(jí)浮層設(shè)置:append-to-body="true"屬性