vue 子組件watch監(jiān)聽不到prop的解決
問題描述
在vue項(xiàng)目中,父組件通過prop給子組件傳值時(shí),如果prop值是從服務(wù)器端獲取,則父組件可能會傳給子組件一個(gè)默認(rèn)值(服務(wù)端數(shù)據(jù)還未及時(shí)獲取),那么,我們就需要實(shí)時(shí)watch這個(gè)prop值,一旦prop值有更新,將立即通知子組件更新。
解決方案
watch: { levelDetail: { immediate: true, // 很重要!!! handler (val) { this.levelPersonal = !val ? {} : val // console.log(’action Value:’, val, this.levelPersonal) } } },
官方文檔
vue-watch 參考文檔
補(bǔ)充知識:vue父組件props參數(shù)太大時(shí)子組件created取不到數(shù)據(jù)-解決方法
問題:
父組件調(diào)用子組件:
<mk-form :list='formList' :formvalue='formvalue'></mk-form>
其中的formList數(shù)據(jù)是用ajax調(diào)用的,數(shù)據(jù)比較大,應(yīng)該有些延遲
子組件的created中調(diào)用props時(shí),輸出的是默認(rèn)數(shù)據(jù):
輸出:
解決方法:
第一種:加上 v-if 來判斷數(shù)據(jù)是佛加載完成了,加載完了再渲染:
<mk-form v-if='formList!=null' :list='formList' :formvalue='formvalue'></mk-form>
第二種:用 setTimeout 來做延遲,但這樣的方法不準(zhǔn)確,應(yīng)該視情況使用
其實(shí)兩種方法都應(yīng)該視情況來使用。
以上這篇vue 子組件watch監(jiān)聽不到prop的解決就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. vue.js - 關(guān)于Vue-cli項(xiàng)目在VPS中用Nginx部署完請求頁面app.js找不到提示404錯(cuò)誤。2. nginx - 關(guān)于javaweb項(xiàng)目瘦身問題,前期開發(fā)后,發(fā)現(xiàn)項(xiàng)目占用存貯空間太大,差不多1.2個(gè)G,怎么實(shí)現(xiàn)瘦身,動(dòng)態(tài)頁面主要是jsp。3. node.js - node項(xiàng)目找不到文件,index.js輸出index.html4. javascript - 如何將一個(gè)div始終固定在某個(gè)位置;無論屏幕和分辨率怎么變化;div位置始終不變5. android - 百度地圖加載完成監(jiān)聽6. html5 - 百度Ueditor代碼高亮和代碼段滾動(dòng)條沖突是怎么回事?7. 淺談Vue使用Cascader級聯(lián)選擇器數(shù)據(jù)回顯中的坑8. vue.js - 項(xiàng)目提交到github上,怎么實(shí)現(xiàn)在線預(yù)覽效果9. javascript - video標(biāo)簽,在微信中無法播放??10. javascript - h5分享鏈接到qq或者微信時(shí)有一個(gè)縮略圖還有一些說明文字,這個(gè)要怎么去修改里面的圖片和內(nèi)容?
