- 【Bug】wx.canvasToTempFilePath 输出空白图片或图片不全
基本信息:iPhone15 Pro, iOS 17.3.1, WeChat 8.0.48 复现步骤: 打开代码片段,在开发者工具上推送到手机端预览,可见图片为空白(透明); 如果无法复现,请在手机上删除小程序后再多试几次; [图片] 如果 canvas 绘制完成后加一个延时(pages/index/index.js Line: 80)后再调用 wx.canvasToTempFilePath 则可以正常输出完整图片,但延时时间无法确定 [图片]
03-27 - MapContext.translateMarker API调用偶现基础库报错
调用地图 translateMarker 移动 marker 时,偶现基础库报错,导致 translateMarker 无法移动marker。 系统信息: [图片] 正常没有报错时的log,可以看出,正常执行了 complete 回调: [图片] 基础库报错时的log,没有执行 complete 回调: [图片] 完整报错信息: SystemError (exparserScriptError) undefined is not an object (evaluating 't.id') TypeError: undefined is not an object (evaluating 't.id') @https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:1648123 forEach@[native code] operateMapHandler@https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:1648116 @https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:1647142 @https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:462908 @https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:462781 i@https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:466723 @https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:467531 l@https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:466182 @https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:467378 @https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:467646 @https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:1133754 @https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:335438 emit@https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:120869 dispatch@https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:128220 cb@https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:128530 emit@https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:120479 subscribeHandler@https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:2:124105 global code@https://servicewechat.com/wx7871a926d3eb9e45/0/page-frame.html:1:72
03-06 - 【Bug】小程序异步分包组件加载被阻塞,js执行出错!
小程序基础库版本要求: 基础库版本 > 2.25.4 时可复现 基础库版本 <= 2.25.4 时表现正常 问题描述及复现步骤: 1) 项目结构,项目分主包和分包(如下图),其中: 主包包含一些公共的,同步的基础组件,如 comp1、comp2、comp3 分包包含一些业务的异步组件,如 async-comp1、async-comp2、async-comp3 ... async-comp7 [图片] 2) 页面结构,包含页面元素、同步组件、异步组件,如下图: 2.1 所有的异步组件在组件的 attached 生命周期中抛出事件 this.triggerEvent('attached') [图片] 2.2 在页面所有的异步组件上监听 attached 事件并进行处理 [图片] 当事件处理器以同步的方式调用 setData 时,会导致部分异步组件的 attached 生命周期不触发, 如下图控制台 AppData 中可以看到,async-comp2、async-comp4、async-comp6 组件的 attached 生命周期不触发,在实际复杂的项目里,会直接表现为组件加载失败。 加载失败的组件表现出一定的规律,async-comp2为第一个监听 attached 事件的后一个组件,async-comp4、async-comp6 组件前都有一个同步组件。 [图片] 当事件处理器以异步的方式调用 setData 时,或小程序基础库版本 <= 2.25.4 时,表现正常,如图: [图片] 针对已上问题,如果是bug,希望官方能够及时修复或者给出解决方案,如果是 feature,麻烦说明其中原理,谢谢!
01-15 - wx.request 开启 enableCache 的细节问题咨询
wx.request 接口文档 https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html 中说到通过设置 enableCache 为 true 来开启 http 缓存,我们在实践的过程中,遇到了一些问题,有一些疑问希望得到解答: 假设调用 wx.request 时设置 enableCache 为 true,后端接口响应头 Cache Control 响应 max-age=600 即 10 分钟; 疑问: http缓存是存在哪里,用户/开发者是否可以通过某种方式删除缓存,如开发者使用 wx.clearStorage 进行删除、用户手动删除小程序、用户在微信设置里面清除缓存?如果在10分钟之内(即http强缓存有效期之内),用户手动删除小程序,然后再搜索小程序,打开小程序,此时 wx.request 同一 URL 是走缓存还是真实向后端服务器发起了请求?缓存数据大小是否有限制,如果有,最大限制为多少,数据超过限制时是如何处理的,直接丢弃或是截取?
2023-08-21 - 当以数据路径的方式更新数据时,无法触发 observers
官方文档:“建议以数据路径形式改变数组中的某一项或对象的某个属性”; 如以下情况下对 list 的监听没有触发: data: { list: [1, 2, 3] } observers: { list(value) { console.log(value) } } lifetimes: { attached() { this.setData({ 'list[0]': 4 }) console.log(this.data.list) // [4, 2, 3] } }
2022-12-01 - 小程序是否考虑支持 app.wxml 文件,用来配置全局通用的单例自定义组件?
在我们的实际需求中,出于个性化需求,经常需要自定义一些全局组件,例如 toast、dialog 等组件,目前自定义组件需要在每个页面的wxml文件中手动写对应的自定义组件标签如 <toast id="toast" /> 等,如果能够引入 app.wxml 去配置全局组件,该组件就可以在所有页面生效,这样就可以把这些组件的功能做成 api 调用,这样开发体验会好很多; 虽然目前可以通过 webpack 等辅助工具来自动注入组件来达到类似的需求,但是从开发角度上来说,小程序开发时配置webpack实时依赖分析、编译耗时长,同时小程序开发者工具还需要再次编译,需要占用大量内存,造成电脑卡顿、崩溃等情况,整体开发体验并不友好。 希望官方能够考虑支持上述类似的需求,非常感谢!
2022-11-09 - 【Bug】map组件同层渲染在部分安卓机上无效
map组件同层渲染无效机型整理如下图: [图片]
2022-09-14 - 【Bug】小程序按数据路径更新列表后dom节点属性渲染错误
小程序开发文档中:性能与体验 -> 运行时性能 -> 3.4 setData 应只传发生变化的数据第二点中提到:“建议以数据路径形式改变数组中的某一项或对象的某个属性,如 this.setData({'array[2].message': 'newVal', 'a.b.c.d': 'newVal'}),而不是每次都更新整个对象或数组”;在某些场景下,使用数据路径更新列表后,dom节点属性渲染错误。复现步骤: 导入代码片段按顺序依次点击页面中的 A、B、C 按钮后,此时按钮 C 处于激活状态依此点击列表 A、B、C、D、E 项,toast 提示获取到的 index 是错误的,查看 wxml 节点上渲染的 data-index 属性值也是错误的以下为代码片段demo: https://developers.weixin.qq.com/s/3Aj0zomi7RB3
2022-08-10