Vue3 子组件onmounted 里面取不到props的值,是因为子组件的页面渲染速度要超过了父组件向子组件传值的速度了,如果子组件初始化的时候要用到父组件传的值可以尝试下面三种方法:
1、对要取数据的代码进行延迟
setTimeout(() => {
state.orderSn= props.orderInfo.orderSn
getTimeDiff();
}, 50);
2、使用getCurrentInstance的mittBus进行传值
父组件:
const { proxy } = <any>getCurrentInstance();
proxy.mittBus.emit('getGoodInfo', state.info);
子组件:
const { proxy } = <any>getCurrentInstance();
proxy.mittBus.on('getGoodInfo', (data: any) => {
console.log(data)
state.orderSn= data.orderSn
getTimeDiff();
});
//不用了之后要取消传值
onUnmounted(()=>{
//取消传值,销毁定时器
proxy.mittBus.off('getGoodInfo', () => {});
})
3、使用props搭配watch
watch监听props传过来的值 直到获取到值再执行要执行的功能。在这里先不做演示了,用的话可以百度一下。
版权归原作者 前端海里浑水摸鱼 所有, 如有侵权,请联系我们删除。