获取的时候应该写成 console.log(this.data.a.b.c.d) ,不能 console.log(this.data['a.b.c.d'])
基础库2.19.6 报错?this.data[key](key类似a.b.c.d)这种情况,获取的值为undefined ,第一次设置完值后,第二次再次获取,发现获取不到值
2022-08-02bug 已确认。我们正在紧急修复。
基础库2.24.7 createIntersectionObserver 元素监听表现异常[图片][图片] logo中显示 1和2都与红框相交了;基础库2.24.6表现正常,所以猜测是2.24.7版本的问题;
2022-07-04这里表意确实有问题,我们修正一下。
behavior的覆盖规则父 behavior > 子 behavior 应该是子>父吧。。。
2022-03-30有个基础的说明: setData 总体上说是同步的。绝大多数情况下,不需要等到 setData 回调再执行之后的逻辑。(那样反而会拖慢整体的流程,因为 setData 的回调是在渲染线程已经确认界面更新之后,有时会非常非常晚。)
可以支持异步 setData 吗?目前在 async/await 中参入回调式 setData 函数显得非常别扭,举个列子,我希望在请求完成后不论成功与否都处理一些单独的业务逻辑: try { const { data: res } = await fetch.getRes('/get', { page: 1, limit: 10 }) if (res.code === 0) { this.setData({ count: res.data.count, list: res.data.list }, () => { doSomeThings1() doSomeThings2() }) } else { wx.showToast({ title: res.data.msg, icon: 'none' }) doSomeThings1() doSomeThings2() } } catch (err) { wx.showToast({ title: '服务器开小差了', icon: 'none' }) doSomeThings1() doSomeThings2() } 会看到上面出现了大量重复代码,增加代码阅读成本,降低开发效率。当然,可以单独封装一下逻辑,例如下面这样: const doThings = () => { doSomeThings1() doSomeThings2() } try { const { data: res } = await fetch.getRes('/get', { page: 1, limit: 10 }) if (res.code === 0) { this.setData({ count: res.data.count, list: res.data.list }, doThings) } else { wx.showToast({ title: res.data.msg, icon: 'none' }) doThings() } } catch (err) { wx.showToast({ title: '服务器开小差了', icon: 'none' }) doThings() } 这时候仍然可以看到出现了三次重复的逻辑。 如果有 setDataAsync 方法,代码看上去会像下面这样更加简洁: try { const { data: res } = await fetch.getRes('/path', { page: 1, limit: 10 }) if (res.code === 0) { await this.setDataSync({ count: res.data.count, list: res.data.list }) } else { wx.showToast({ title: res.data.msg, icon: 'none' }) } } catch (err) { wx.showToast({ title: '服务器开小差了', icon: 'none' }) } doSomeThings1() doSomeThings2() 当然,也许可以自己定义一个 setDataAsync 方法,像这样: Page({ /** * 异步设置数据 * @param {Record<string, any>} data * @returns {Promise<void>} */ setDataAsync(data) { return new Promise(resolve => void this.setData(data, resolve)) } }) 可是上面这么做存在一些问题: 每个页面/组件都需要手动写上该方法,仍然会增加大量的重复代码。结合 TypeScript 时,无法和 setData 一样获得良好的代码补全(setData 方法可以获得在 data 中定义的属性并自动补全)。 以上是目前我开发时遇到的问题,目前能想到的方案是支持异步 setData,可以考虑两种方式: 让原有的 setData 返回 Promise,原有 callback 保持不变。新增 setDataAsync 异步方法。个人认为第一种方式更好些,希望开发团队考虑下。
2022-03-28感谢反馈!已确认在开发版和体验版上确有类似问题,我们会尽快修复上线。
微信小程序页面设置初始渲染缓存(initialRenderingCache)后,无法取消?我在首页的index.json配置文件里添加节点 { "initialRenderingCache": "static" } 手机初始渲染缓存可以生效,但是当我删除掉这个配置节点,手机的初始渲染缓存依然可以生效,我把小程序删除,再重新扫码进入,初始渲染缓存依然生效。 请问如何让该配置取消?
2022-03-07eventChannel 是双向的通信通道。 不过,从原则上说,与页面初始状态相关的数据应该放在 URL 中。这样有利于从小程序以外直接进入这个页面。
通过url地址携带参数和eventChannel.emit方法传参有何区别?wx.navigateTo({ url: '/pages/my/tenantpersonInfo/index?action=update', success: function(e){ res.eventChannel.emit('acceptData',{data: 'test'}) } })
2022-02-17这个警告有误。之后我们会移除。
frameset 提示不支持?[图片] 版本:1.05.2112301 涉及到的文档: https://developers.weixin.qq.com/miniprogram/dev/framework/view/frameset.html
2022-01-05感谢反馈。 经分析,问题在于这样 switchTab 的时候,有时会先展示出当前所在的 tab 页面( tabA ),然后再显示出新的目标 tab 页面( tabC )。在 iOS 上会使得 tabA 页面被显示出来几十甚至上百毫秒时间。 对具体的页面逻辑并没有影响。 之后我们会着手优化一下。
微信小程序switchTab的bug!在ios上面一直复现,在开发者工具仅会一些,连续跳转旧的页面? wx.switchTab({ url: '/pages/mineIndex/mineIndex' }); [图片] 复现过程: 现有tabA、tabB、tabC、tabA子页面 现在通过tabA子页面 - 跳转到tabC,目前情况是 tabA子页面 - 会先闪到tabA - 在跳转到tabC,苹果手机毕现,开发者工具,刷新后第一次会复现
2021-12-27看过了代码片段。 请不要使用持续 while 循环来实现,否则会阻塞小程序主线程,使得所有异步过程(如异步的 wx API 接口和 setData 的异步过程)不会被实际执行。
控制 camera 闪光灯 灯亮时长?最终效果:10ms为一单位,通过更新data数据控制camera中flash值控制 闪光灯 亮与灭 目前效果为:每10ms执行了data更新数据 但是通过AppData查看 发现仅仅更新了3次 20次的更新 仅有3次更新了数据之后就没有在更新,将时间放大到100ms就没有这个问题了
2021-12-22看了一下你的代码片段。里面某些 console log 出来的变量是有些时序依赖的。请注意不同环境下事件时序可能不同。
wx.navigateTo使用eventChannel传递数据,真机调试为空?https://developers.weixin.qq.com/s/6GfrxnmB7Lv6 上面是可重现问题的代码片段,模拟器正常,真机调试就不行了,有大佬碰到过吗?
2021-12-09