通过 wx:if 控制新版 Canvas 接口渲染内容显隐会导致微信闪退 ​​​​
发布于 5 年前 作者 haochao 6710 次浏览 来自 官方Issues

当使用 wx:if 控制新版 canvas 显隐时(https://developers.weixin.qq.com/community/develop/doc/00020a02c2c040114d19a398f5b001?highLine=canvas),会导致微信 App 闪退。iOS 版本 13.1.2

<canvas
wx:if="{{show}}"
  type="2d"
  id="canvas"
  style="width: 300px; height: 300px;"
></canvas>
 
<button bindtap="showHide">显示/隐藏</button>

视频链接:https://share.icloud.com/photos/0t16pVlvARSgj0vp5yfoyow8Q

3 回复

这个问题已知了,我们下个版本会修复。这里主要是因为通过 wx:if 控制 canvas 的时候会销毁画布,但是 requestAnimationFrame 仍然在运行,绘制到一块已经销毁的画布上导致闪退。你可以:

在隐藏画布之前手动做一下 cancelRequestAnimation 把循环先停止。

是只使用这个代码片段可以复现问题吗?这边测试未复现问题,出现问题的具体机型是什么?

canvas,你可以采用定位的方式让它隐藏,

例如设置canvas的position:fixed;top:100rpx;left:100rpx;

想隐藏时,改为top:-2000rpx;left:-2000rpx;

回到顶部