通过 wx:if 控制新版 Canvas 接口渲染内容显隐会导致微信闪退 ​​​​

发布于 6 年前作者 haochao7000 次浏览最后编辑 6 年前来自 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 回复
na81
na811 楼6 年前

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

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

sxiang
sxiang2 楼6 年前

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

huwei
huwei3 楼4 年前

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

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

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