详细问题描述
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
0 个回复