wechat-miniprogram / glass-easel

Multiple-backend component-based JavaScript framework
MIT License
240 stars 34 forks source link

setData传递数组数据时有bug,setData后界面显示异常。 #203

Open 202225feng opened 1 month ago

202225feng commented 1 month ago

执行setData后,开发工具的界面上有些部位产生了变化,有些部位没变,而且按钮内显示的是数据的类型。Android和Windows上都产生了变化。 代码片段链接:https://developers.weixin.qq.com/s/8uIRkUmw7lUJ 下面是开发工具、Windows、Android三个平台的情况。

微信截图_20241013165137

界面里面是三个按钮, 都用同一个数组数据设置按钮的背景颜色,对数据的组合和处理不同界面显示也不一样。按钮内的内容用的也是这个数据。 问题: 1、 Style里面直接放js数据就会正常刷新界面,双引号里面有一个字符或者用wxs返回数据就不会刷新。 2、按钮内容显示不正常。 代码: Wxml:

微信截图_20241014152136

Js:

微信截图_20241014152152

LastLeaf commented 1 month ago

这是因为当 app.json 里面配置有 "componentFramework": "glass-easel" 但没有配置 "renderer": "skyline" 的时候:目前,开发者工具上完全不会启用 glass-easel (而是沿用旧组件框架);而脱离开发者工具之后,就会启用“一半 glass-easel ”。所以你会看到这种表现差异。

目前在小程序环境下,还无法在不启用 skyline 的时候启用完整的 glass-easel ,因为我们还在优化 glass-easel 的稳定性。如果试着这样启用,就会出现上面这样的“启用一半 glass-easel ”的情况,这意味着依旧无法使用 glass-easel 带来的新特性。所以不是很推荐这么做。

至于为什么旧框架与 glass-easel 在这一点上表现不同:简单来说,更新原理不太一样。 glass-easel 的更新范围检查更细、 toString 转换也不太一样,所以上面的显示结果看起来也不同。