spliceArrayDataOnPath 和 applyDataUpdates 是我们新的组件框架 glass-easel 的公开接口,因为 skyline 目前已经全部跑在 glass-easel 框架上了,所以可以在 skyline 中使用;我们正在加紧进行 webview 的适配,预计很快就能正式上线,届时我们也会一起改下这一块的文档,这两个接口也会写上 可以先参考下我们托管在 GitHub 上的 glass-easel 框架的文档:https://wechat-miniprogram.github.io/glass-easel/docs/glass-easel/classes/Component.html#spliceArrayDataOnPath ;另外 glass-easel 框架本身也在 GitHub 上开源了,也可以一起参考下:https://github.com/wechat-miniprogram/glass-easel
spliceArrayDataOnPath 和 applyDataUpdates 方法文档未找到?我在看Skyline 渲染引擎 /增强特性 /滚动容器及其应用场景 文档 【完全的按需渲染】部分讲解时,使用微信开发者工具下载了示例代码。 示例代码地址:https://developers.weixin.qq.com/s/z25kA6mv7gPx this.spliceArrayDataOnPath(['preList'], 2, 0, [{ wxKey: `pre-key-insert-${seed}`, height: (Math.floor(Math.random() * 4) + 1) * 100, color: colors[seed % 5] }]); this.applyDataUpdates() 在代码中 index2/index2.js中看到这块代码块。发现了 spliceArrayDataOnPath 和 applyDataUpdates 方法,在微信小程序的开发文档中,没有找到此方法。请问一下这两个方法的相关介绍在哪里可以找到呢?
09-26确认到问题了,确实是片段里这个特定的时序的时候,3.9.1 引入的一个优化会有点问题 我们尽快修复上线,非常感谢~
【BUG】skyline 3.10.x基础库下,部分情况组件第一次被渲染,样式会丢失代码片段提供了比较小的可复现demo,具体的场景应该还有其他的。 我们业务比较复杂,复现这个问题形成最小demo花了好久.. 实际应该从3.9.x开始就存在这个问题,3.10.0是目前主要复现的基础库。 表现如下: 第一次进入页面,组件样式丢失,第二次进入样式正常渲染 [图片] 第二个页面是子包页面,第一个页面引入了子包的一个组件,作为异步组件,但是因为有显隐条件,暂时不渲染出来。 这种情况下第二个页面也引用了这个组建,样式就会丢,但是要像demo里的这种组建组合才行,把第二个页面的两个组件在模板里交换位置..样式渲染也是正常的
09-12看了下,是 navigateTo 等路由接口调用时对 url 做的处理有些问题,会使实际用于跳转的路径中的这种空值被替换为 undefined;我另外试了下几个不走路由接口的场景,从开发者工具的编译模式或者 onShareAppMessage 分享时填这个 query,是能正常解析到空 value 的 考虑到线上可能已经有小程序依赖这个行为运行,现在修这个 url 处理实际上是个有点危险的 breaking change 了,如果没有必要,我们可能倾向于不去改动这个行为;可以考虑用 &color=& 来规避
【Bug】页面 onLoad(options) 生命周期中解析当前URL参数 options 有误!小程序页面 onLoad 生命周期中解析的 URL 参数对象 options 中,没有严格遵循规范进行解析,导致解析结果有误! 如导航到的页面路径为:/pages/about/about?name=tesla&color&price=30,针对 ?name=tesla&color&price=30 这个查询参数,其中 color 参数只有 name 没有 value,且参数对中不包含 = 号,按照规范应当把 color 的值解析为空字符串,而小程序解析为字符串 "undefined" 当前小程序 onLoad 中的 options 为 { "name": "tesla", "color": "undefined", "price": "30" }按照规范,预期 options 应当为 { "name": "tesla", "color": "", "price": "30" }这个错误会导致页面类似下面的条件分支执行错误: if (!options.color) { // 由于color被解析为字符串 "undefined" 导致无法进入该条件分支 } 小程序解析结果截图: [图片] 希望官方能够按照 WHATWG URL Standard 规范进行URL参数的解析! WHATWG URL Standard:https://url.spec.whatwg.org/#concept-urlencoded-parser 从我的测试结果来看,浏览器、Nodejs 都遵循了规范,对于查询参数中没有 = 号的查询参数解析为空字符串,以下是测试截图: 浏览器: [图片] Nodejs: [图片]
08-27这里可能是我们对低版本基础库的兼容有些问题,可以暂时先在工具里推送最新的基础库来调试,我们处理一下这里
skyline模式开发模式真机白屏?R.devArgs is not a function只在部分手机上出现这个问题,有些手机又没有这个问题。已经清除手机上小程序的缓存数据了。。 完全没有头绪啊,有没有什么思路解决这个问题。 [图片][图片] 这个是真机调试模式报的错误。是依赖安装的问题吗? [图片] [图片]
02-28真机环境模板中调用 data 函数返回一个函数的情况之前因为一些原因调整过,Skyline 下表现确实不符合预期了,我们修一下
模板中调用data函数 返回不正确模板中调用data函数 [图片] 若返回回调函数 [图片] 在开发者工具中 返回正常,在真机环境中返回 null
2024-10-17感谢反馈,是在开发者工具上出现的吗?工具不太行的话可以也试下预览到手机看看
skyline渲染下,wxs响应事件参数中无法获取ComponentDescriptor 实例?skyline中,打印 instance 为 undefined 小程序基础库 3.5.8 更新中第三条提到:更新 框架 glass-easel 组件框架支持 WXS 事件响应 指的不是skyline 要支持wxs的意思吗? // index.wxml <wxs module="test" src="./test.wxs"></wxs> <view change:prop="{{test.propObserver}}" prop="{{propValue}}" bindtouchmove="{{test.touchmove}}" class="movable"></view> <slot name="btn" bind:longpress="{{dragToSort.longPress}}" ... ... // index.wxs module.exports = { touchmove: function(event, instance) { console.log('log event', JSON.stringify(event),instance) }, propObserver: function(newValue, oldValue, ownerInstance, instance) { console.log('prop observer', newValue, oldValue) } } webview 模式下;页面初始化时 test.propObserver 函数 会执行; skyline 模式下;页面初始化时 test.propObserver 函数 不会执行; why?为啥会有这样的差异
2024-09-26感谢反馈,确实是有个问题,已经定位到了,近期修复上线~
skyline 模式下include代码片段中的单个值改变不会响应?代码片段: https://developers.weixin.qq.com/s/qUMTuYmb7FTI 设置多个值或者对象可以引起include的代码中的响应
2024-09-10我这里复现不了 https://developers.weixin.qq.com/s/sMXMiIm67nR3 能给一个复现的片段看一下吗?
skyline模式下wxss @import无效在 app.wxss 全局样式中通过 @import 引入其他公用样式,在wxml中使用无效,将公用样式直接写在 app.wxss 后样式生效 不使用@import [图片] 使用@import [图片] webview模式下正常 [图片]
2024-06-05目前已知一个问题,当从开启了 componentFramework: glass-easel 的自定义组件中 import 或者 include 另一个分包中的 WXML 模板,且这个模板既不属于一个开启了 glass-easel 的组件,也未被它所在分包内的其他 glass-easel 组件 import 或者 include 时,会导致这个报错;原因是目前跨分包的模板依赖分析存在一些问题。可以验证下这个报错是否属于这种情况,如果是的话,可以在我们修复完成前通过将目标模板复制一份到同一个分包内来暂时规避,我们会尽快修复。
当部分页面切换到skyline模式后,当进入一个webview模式的页面时,webview页面白屏当app.json全局开启 glass-easel 支持 "componentFramework": "glass-easel", 当部分页面切换到Skyline模式后,当进入一个webview模式的页面时,webview页面白屏 控制台报错 SystemError (jsEnginScriptError) Cannot read properties of undefined (reading '_') TypeError: Cannot read properties of undefined (reading '_') at I (index/components/air-control-popup/index.appservice.js:1:307) at L0 (index/components/air-control-popup/index.appservice.js:1:6267) at t.handleChildrenCreation (common.app.js:1:30533) at (common.app.js:1:30943) at J0 (index/components/air-control-popup/index.appservice.js:1:6525) at t.handleChildrenCreation (common.app.js:1:30533) at (common.app.js:1:30782) at I0 (index/components/air-control-popup/index.appservice.js:1:7047) at t.handleChildrenCreation (common.app.js:1:30533) at (common.app.js:1:30782) 开发者工具上正常,只有真机运行才会上面的问题 理论上,部分页面切换Skyline,无需全局开启 glass-easel 支持,目前会出现一种情况: 项目存在2个tab页面(自定义tab组件),其中一个tab页面已切换成Skyline,另外一个为webview,在不全局开启 glass-easel 的情况下,Skyline的自定义tab组件无法渲染,webview页面正常。一旦全局开启 glass-easel 支持即设置"componentFramework": "glass-easel",自定义tab组件在两个tab页面渲染正常。 以上情况仅出现在真机,开发者工具正常 app日志已上传, 微信号:world-soon-test 报错时间: 2024-4-9 14:40 和14:54这两个时间点
2024-04-09感谢反馈,很清晰的片段~ 我们排查到这里出问题的原因是目前的占位组件替换逻辑对相关组件的生命周期的触发时序处理不对,表现为组件 attached 或子组件 moved 生命周期触发时,组件节点树处于一个不正确的临时态,导致此时(attached 生命周期中)同步的 setData 引发的模板 diff 无法正确同步到节点树上,从而在后续的流程中创建了错误的替换组件,并在错误的组件上触发了 attached 周期,最终出现片段中的问题。 这段逻辑在基础库 2.26.1 版本引入,目的是修复更早版本中的另一个问题(子组件会先触发 detached 再触发 attached,而不是触发 moved)。我们会尽快处理修复这个问题,再次感谢~
【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,麻烦说明其中原理,谢谢!
2024-01-22