7***@qq.com
7***@qq.com
  • 发布:2020-04-05 18:23
  • 更新:2020-04-05 18:23
  • 阅读:1109

【报Bug】uniapp代码进行wx小程序解析时,某种情况下得不到想要的预期,甚至是错误的编译

分类:uni-app

详细问题描述

uniapp代码进行wx小程序解析时,某种情况下得不到想要的预期,甚至是错误的编译

[内容]

重现步骤

[步骤]
只取了一些关键代码:

<view v-for="item in filteredItems">  
    <text class="nameImage">{{ itemParticipantInfos.get(item.id).senderName.slice(-2) }}</text>  
</view>  

export default: {  
    data:  {  
        return {  
                     filteredItems: [],  
                     itemParticipantInfos: new Map()  
                  }  
              },  
        created() {  
                          初始化数组filteredItems、初始化Map itemParticipantInfos  
                        }  

在页面渲染之前,filteredItems、itemParticipantInfos都已赋值完成。

[结果]
在h5、app都能达到预期。但是小程序会报错 item没有定义。
查看源码,发现:

var render = function() {  
  var _vm = this  
  var _h = _vm.$createElement  
  var _c = _vm._self._c || _h  
  var g0 = _vm.itemParticipantInfos.get(_vm.item.id).senderName.slice(-2)  

  var l4 = _vm.__map(_vm.filteredItems, function(item, __i0__) {  
    var g1 = _vm.itemParticipantInfos.get(item.id)  
    ......  

_vm.$mp.data = Object.assign(  
    {},  
    {  
      $root: {  
        g0: g0,  
        ......  
      }  
    }  
  )  

从代码逻辑可以看到 g0挂错了地方,挂到了$root下了,实际上,g0应该挂在下面这里

var l4 = _vm.__map(_vm.filteredItems, function(item, __i0__) {  
    var g0 = _vm.itemParticipantInfos.get(item.id).senderName.slice(-2)  
    var g1 = _vm.itemParticipantInfos.get(item.id)  
    ......  

......  
return {  
      $orig: _vm.__get_orig(item),  
      g0: g0,  
      ......  
    }  

手动改了编译后的wx源码,运行正常
[期望]

类似这种场景比较多,都是这个原因造成的,希望能够得到解决,谢谢!

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]

HBuilderX 2.6.9.20200403

联系方式

[QQ]7344835

2020-04-05 18:23 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复