f***@163.com
f***@163.com
  • 发布:2023-12-04 09:30
  • 更新:2023-12-04 14:33
  • 阅读:378

【报Bug】将pinia store通过props传入插槽组件,组件内调用actions方法抛异常后,微信小程序真机上会死循环 页面卡死

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 11

第三方开发者工具版本号: RC 1.06.2310071

基础库版本号: 3.2.2

项目创建方式: CLI

CLI版本号: 3.0.0-3090820231124001

App下载地址或H5⽹址: 报错示例代码见附件

示例代码:

报错示例代码见附件

附件项目如何使用:

  1. 下载zip压缩包,解压
  2. 在项目目录,使用yarn安装依赖
  3. 使用yarn dev:mp-weixin命令编译成微信小程序
  4. 打开微信开发者工具进行调试
  5. 微信开发者工具生成开发码,手机扫码,即可一键死机

操作步骤:

复现步骤(可参照附件项目,附件里的项目有完整复现方法):

  1. 创建一个Pinia的Store,里面定义一个Action方法,方法内抛出异常
  2. 创建父组件,在父组件内useStore,并存入对象,当做props传入子组件
  3. 创建子组件A,声明一个插槽
  4. 创建子组件B,子组件某个方法调用(通过props传入的)Store里的异常Action
  5. 在父组件使用子组件A,将子组件B传入子组件A的插槽内
  6. 使用真机调试微信小程序,触发报错Action,100%出现死循环卡顿,手机会发烫死机

预期结果:

预期结果:正常报错,但不会造成死循环并死机

实际结果:

触发报错Action,100%出现死循环卡顿,手机会发烫死机

bug描述:

Vue3+ts版复现该BUG
(项目由CLI创建,命令:npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project)

复现步骤(可参照附件项目,附件里的项目有完整复现方法):

  1. 创建一个Pinia的Store,里面定义一个Action方法,方法内抛出异常
  2. 创建父组件,在父组件内useStore,并存入对象,当做props传入子组件
  3. 创建子组件A,声明一个插槽
  4. 创建子组件B,子组件某个方法调用(通过props传入的)Store里的异常Action
  5. 在父组件使用子组件A,将子组件B传入子组件A的插槽内
  6. 使用真机调试微信小程序,触发报错Action,100%出现死循环卡顿,手机会发烫死机

附件项目如何使用:

  1. 下载zip压缩包,解压
  2. 在项目目录,使用yarn安装依赖
  3. 使用yarn dev:mp-weixin命令编译成微信小程序
  4. 打开微信开发者工具进行调试
  5. 微信开发者工具生成开发码,手机扫码,即可一键死机
2023-12-04 09:30 负责人:YUANRJ 分享
已邀请:
YUANRJ

YUANRJ

感谢反馈,这边排查下

YUANRJ

YUANRJ

已复现问题,与pinia无关,后续会修复。你可以先把错误捕获下

  • f***@163.com (作者)

    好的 谢谢!

    2023-12-04 14:41

  • f***@163.com (作者)

    您好,有具体修复发版时间吗

    2023-12-15 10:38

  • YUANRJ

    回复 f***@163.com: 我之前的回答有误,这个问题是pinia导致的,为什么要传递一个store呢?你直接在子组件引入试试

    2023-12-18 17:12

  • f***@163.com (作者)

    回复 YUANRJ: 因为业务需要,同样的interface可能传入的实现不同,所以需要传入,不太方便直接use去使用pinia store

    2023-12-19 10:52

  • f***@163.com (作者)

    回复 YUANRJ: 使用原生Vue没有复现这样的问题,只有uniapp微信的运行时环境上出现了这样的问题。麻烦修复这个死循环问题,支持下这样的用法。谢谢

    2023-12-19 15:49

要回复问题请先登录注册