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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐