收藏
回答

wxs 脚本中 for 循环的一种写法导致 page-frame.html 报错

问题模块 框架类型 问题类型 终端类型 微信版本 基础库版本
框架 小程序 Bug 客户端 6.7.4 2.4.1

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


P.S. 本来昨天就想提这个问题,但今天想截图效果时,发现使用同一段代码时却无法复现了。。。


原本我是想在 wxs 中循环遍历一个数组,然后判断符合某个条件后再返回这个数组元素(数组元素是一个对象),在开发者工具是正常的,但是在手机真机上(iOS 和 Android 都是,试过多个机型)查看开发版进入这个页面时却出现白屏,点开 vConsole,有如下提示:




比较奇怪的一点就是,我原本没有动过代码,昨天就突然出现这个问题,但是到今天,他又突然正常了。。。


- 预期表现


能正常显示页面


- 复现路径


详见下方 demo 代码


- 提供一个最简复现 Demo


原来有问题的代码:


···

<wxs module="helper">


module.exports.filterIndexBanner = function(banners) {

 var i = 0

 var len = banners.length

 for (i, len; i < len; i++) {

   if (banners[i].identification === 'HOME_PAGE') {

     return banners[i]

}

}


 /*  方案1:把上方改成如下就能正常:

     for (var i = 0; i < banners.length; i++) {

       if (banners[i] && banners[i].identification === 'HOME_PAGE') {

         return banners[i]

       }

     }

 */


 return {

   identification: 'HOME_PAGE',

   image: '../../images/banner.png'

}

}


</wxs>


<view class="image-wrap"

           data-href="{{ helper.filterIndexBanner(banners).link }}"                         <!-- 方案2: 把这三行删掉就可以正常显示 -->

           data-type="{{ helper.filterIndexBanner(banners).linkable_type }}"         <!-- 方案2: 把这三行删掉就可以正常显示 -->

           data-name="{{ helper.filterIndexBanner(banners).name }}"                   <!-- 方案2: 把这三行删掉就可以正常显示 -->

           bindtap="onTapBanner">

    <image src="{{ helper.filterIndexBanner(banners).image }}"/>

</view>


···

最后一次编辑于  2018-11-28  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

1 个回答

  • 卢霄霄
    卢霄霄
    2018-11-28

    你js里存在直接修改 this.data的值,这种情况吗?

    this.data.list[0].name = "卢霄霄"

    这种

    2018-11-28
    赞同
    回复 1
    • 
      
      2018-11-28

      并没有哦,变量的赋值全部都是通过 redux 配合 setData 注入页面中的 data 的

      2018-11-28
      回复