收藏
回答

wx:if 中使用 undefined 的 bug

wx:if 把 {{ undefined }} 、 {{ undefined !== undefined }} 、 {{ undefined != undefined }} 认为是 true


复现步骤如下:

<view wx:if="{{show}}">aaa</view>

这样一个 view 组件,如果在 js 代码里把 show 初始化成 undefined,那么这个组件在页面初始渲染时的确不会被渲染,然后在 js 代码中将 show 赋值为 true

this.setData({
    show: true
});

那么这个 view 组件会被渲染并显示,但接下来再将 show 赋值为 undefined

this.setData({
    show: undefined
});

此时这个view仍旧会显示。


把判断条件换成 undefined !== undefined 或 undefined != undefined 也是如上面一样的效果

<view wx:if="{{show !== undefined}}">aaa</view>



望尽快修复此bug

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

8 个回答

  • LastLeaf
    LastLeaf
    2017-12-11

    修正一下我3L的说法:应该说是没有在视图层中setData(只是在this.data中移除了而已)。

    2017-12-11
    有用
    回复
  • LastLeaf
    LastLeaf
    2017-12-11

    你好,如果你是直接设置 .setData({ something: undefined }) ,这个字段是被直接忽略的,没有被setData。这是客户端的限制,我们接下来会在编辑器中加一个强提示。

    2017-12-11
    有用
    回复
  • Hayate
    Hayate
    2023-12-19

    2023年末了 这bug还在 setData 如果参数是undefined 就会被过滤掉 感觉就是bug

    2023-12-19
    有用 1
    回复
  • 在逃公主👸
    在逃公主👸
    01-16

    2024年了,还在踩这个坑。。

    01-16
    有用
    回复
  • 吼吼
    吼吼
    2022-09-29

    快2023年了,这个bug还在?

    2022-09-29
    有用
    回复
  • SKY
    SKY
    2019-12-11

    我到现在还有这个问题。 第一次加载就没有问题,第二次就不行。

    2019-12-11
    有用
    回复
  • 西赛德李
    西赛德李
    2017-12-09

    奇怪的是初始化时如果 show 就是 undefined,那么是正常的;后来用 setData 设置成 undefined 就没用。不知道是什么原因。

    2017-12-09
    有用
    回复
  • 赵青山
    赵青山
    2017-12-09

    是bug,官方赶快修复啊,

    2017-12-09
    有用
    回复
登录 后发表内容