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传过来的值 直到获取到值再执行要执行的功能。在这里先不做演示了,用的话可以百度一下。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐