uniapp + vue3开发中组合式函数必须是一个同步函数

目录

vue3中的组合式函数用法:

官网示例异步组合式函数:同步函数写法

 改造成导出async组合式函数时:

uniapp无法使用async组合式函数的原因:


vue3中的组合式函数使用时,导出的组合式函数必须是一个同步函数。

vue3中的组合式函数用法:

官网示例异步组合式函数:同步函数写法

这是官网示例,我们按示例运行一下:

 改造成导出async组合式函数时:

会发现模块无法渲染,同时有一个警告错误:

[Vue warn]: Component <Anonymous>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered. 
  at <CompositionFunction> 
  at <VanTab title="组合式函数" name="e" > 
  at <VanTabs ref=Ref< Proxy(Object) {…} > count=4 inited=false  ... > 
  at <VanTabs active="e" onUpdate:active=fn > 
  at <Test onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< Proxy(Object) {__v_skip: true} > > 
  at <RouterView> 
  at <App>

原来是因为当组合式函数为一个async函数时,setup函数会变成一个promise,此时必须使用vue3中的新组件<Suspense>将组件包裹起来,否则无法渲染。

我们包起来试试:

 发现成功了。

uniapp无法使用async组合式函数的原因:

 那么,同样的操作,我们为什么在uniapp中不行呢?

因为 uniapp 不支持 <Suspense>

因此在uniapp中,只能使用同步的组合式函数写法,异步就GG

顺便贴一下报错截图:

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值