亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

組件methods方法獲取props傳值滯后

組件methods方法獲取props傳值滯后

九州編程 2019-04-27 17:19:00
問題描述我想做個功能,子組件中有個默認方法,但是子組件通過$emit方法先執行父組件的業務判定,父組件通過改變props的值通知子組件,子組件如果獲取為false后不執行默認方法,否則執行默認方法。問題出現的環境背景及自己嘗試過哪些方法相關代碼//請把代碼文本粘貼到下方(請勿用圖片代替代碼)子組件中props:{delflag:true},watch:{delflag(n,o){console.log(1);//結果4console.log(n);//結果5console.log(2);//結果6},}methods:{asynchandleDelete(index,row){awaitthis.$emit("delevent",{index,row});console.log(this.delflag);//結果1if(this.delflag)console.log("del");//結果2console.log("nodel");//結果3}}父組件:@editevent="edit"del(pval){this.delflag=false}執行順序結果:結果1true結果2del結果3nodel結果41結果5false結果62你期待的結果是什么?實際看到的錯誤信息又是什么?我希望改變props的值執行后,子組件能夠立即獲取父組件的判定結果,控制子組件事件是否執行,或通過其他途徑實現相關業務邏輯如果大家有什么不明白的可以QQ聯系我86953422,長期在線,該問題我覺得很有用,在我設計的架構中,很多地方都能用到,也希望通過這個QQ多交流一些朋友
查看完整描述

2 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

不懂你想做什么,感覺你的需求完全可以,通過給子組件添加一個ref屬性,然后在父組件中this.$refs['childRef'].childDefaultMethod(delFlag)實現。
                            
查看完整回答
反對 回復 2019-04-27
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

$emit只是去觸發綁定事件,本身又不返回Promise你加上await修飾符也是無用,像這種需求寫在$nextTick就能得到更新后的值了
handleDelete(index,row){
this.$emit('delevent',{
index,
row,
});
this.$nextTick(()=>{
console.log(this.delflag);//結果1
if(this.delflag)console.log('del');//結果2
console.log('nodel');//結果3
});
},
vue2.1以后$nextTick不傳參會返回Promise可以用await修飾符做偽同步
asynchandleDelete(index,row){
this.$emit('delevent',{
index,
row,
});
awaitthis.$nextTick();
console.log(this.delflag);//結果1
if(this.delflag)console.log('del');//結果2
console.log('nodel');//結果3
},
                            
查看完整回答
反對 回復 2019-04-27
  • 2 回答
  • 0 關注
  • 1136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號