收藏
回答

2.2.3基础库导致页面乱掉

框架类型 问题类型 操作系统 工具版本
小程序 Bug macOS 1.02.1808101

- 当前 Bug 的表现(可附上截图)

- 预期表现

源码实现的是一个未知层级的JSON数据的可视化渲染,实现了多个类型component,子组件的样式会影响父组件的样式,并且样式是通过代码动态计算(例如计算布局、宽高、边框等),每个组件都会绑定一个事件,事件接收class、style等信息,接收后动态绑定到当前组件的wxml上。


上周更新2.2.3后,发现所有样式都乱掉了,后面定位为基础库问题,切换为2.2.2、2.2.1等基础库一切正常,但是真机上已经无法恢复了……不知道这次2.2.3更新了什么内容?

- 复现路径

- 提供一个最简复现 Demo

回答关注问题邀请回答
收藏

1 个回答

  • 晨
    2018-08-20

    麻烦给个相关的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),我们定位下问题

    2018-08-20
    有用
    回复 9
    • 2018-08-20

      这个可能没办法贴代码片段,这块代码比较复杂,而且语法是我们内部自己的框架做的,同时还依赖着未上线的接口。


      <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这些节点上。

      2018-08-20
      回复
    • 2018-08-20

      麻烦你们确认下,这次基础库更新,是否有涉及数据绑定方面的更改,或者是组件相关的。源码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>


      2018-08-20
      回复
    • LastLeaf
      LastLeaf
      2018-08-21

      你好,请问问题是 style 属性没有成功设置吗?

      2018-08-21
      回复
    • 小程序技术专员-june
      小程序技术专员-june
      2018-08-21回复

      问一下,你们框架里有做 setData.call(xxx, data) 这样的操作么?

      2018-08-21
      回复
    • 2018-08-21回复小程序技术专员-june

      并没有这么做,今天又和同事一起定位了一下,发现__wxExparserNodeId__之前对于每一个自定义组件都是唯一的,但是2.2.3的基础库已经变成了不唯一,会有重复的现象,这个是feature还是bug?

      2018-08-21
      回复
    查看更多(4)
登录 后发表内容