- 当前 Bug 的表现(可附上截图)
无
- 预期表现
源码实现的是一个未知层级的JSON数据的可视化渲染,实现了多个类型component,子组件的样式会影响父组件的样式,并且样式是通过代码动态计算(例如计算布局、宽高、边框等),每个组件都会绑定一个事件,事件接收class、style等信息,接收后动态绑定到当前组件的wxml上。
上周更新2.2.3后,发现所有样式都乱掉了,后面定位为基础库问题,切换为2.2.2、2.2.1等基础库一切正常,但是真机上已经无法恢复了……不知道这次2.2.3更新了什么内容?
- 复现路径
无
- 提供一个最简复现 Demo
无
麻烦给个相关的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),我们定位下问题
这个可能没办法贴代码片段,这块代码比较复杂,而且语法是我们内部自己的框架做的,同时还依赖着未上线的接口。
<
comA
>
<
block
wx:for
=
"xxx"
>
<
comA
></
comA
>
<
com-child-A
></
com-child-A
>
<
com-child-B
></
com-child-B
>
<
com-child-B
></
com-child-B
>
</
block
>
</
comA
>
大概是以上的结构,所有的组件都是有可能递归使用的,即A里面有B,B里面有A,A里面也可能有A,最后style是动态修改的,且style是绑在组件使用的这个wxml上,而不是在组件实现内部的根节点上,即绑定在上述的comA、com-child-A这些节点上。
麻烦你们确认下,这次基础库更新,是否有涉及数据绑定方面的更改,或者是组件相关的。源码setData的频率和次数会比较多,而且从接收到的事件来看,每个组件确实有接收到计算好的样式字符串,并会更新到data中,但是在wxml中并不更新。绑定方式如下:
<
comA
>
<
block
wx:for
=
"xxx"
>
<
comA
style
=
"{{map.style[item.id]}}"
></
comA
>
<
com-child-A
style
=
"{{map.style[item.id]}}"
></
com-child-A
>
<
com-child-B
style
=
"{{map.style[item.id]}}"
></
com-child-B
>
<
com-child-B
style
=
"{{map.style[item.id]}}"
></
com-child-B
>
</
block
>
</
comA
>
你好,请问问题是 style 属性没有成功设置吗?
问一下,你们框架里有做 setData.call(xxx, data) 这样的操作么?
并没有这么做,今天又和同事一起定位了一下,发现__wxExparserNodeId__之前对于每一个自定义组件都是唯一的,但是2.2.3的基础库已经变成了不唯一,会有重复的现象,这个是feature还是bug?