感谢反馈!列表中有所遗漏,我们补一下。 关于 behavior 内 observers 的行为:类似于生命周期,同名 observers 不会相互覆盖;被同一个组件多次引用时,只会触发一次。
官方behavior文档完善[代码]“Behavior()[代码] 构造器提供了新的定义段 [代码]definitionFilter[代码] ,用于支持自定义组件扩展。 [代码]definitionFilter[代码] 是一个函数” 这段引自 https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/extend.html https://developers.weixin.qq.com/miniprogram/dev/reference/api/Behavior.html behavior定义文档却没有明确记录 另外对于behavior中定义observers的行为也同样没有记录,希望官方完善
2022-08-08获取的时候应该写成 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