收藏
回答

微信小程序wx:if页面初始加载显示相反。

本人想制作一个商品左滑动实现商品的收藏和取消收藏,使用了vant的滑动单元格组件,使用wx:if和wx:else判断商品是否收藏了,是否收藏的数据存在data里,但是在页面第一次加载的时候“加入收藏”和”移除收藏“的显示是完全相反的,意思是从后台读到商品是收藏了的,设置为true标记,但是他显示的却是“加入收藏”,实际上要显示“移除收藏”,点击第一次按钮后,按钮内容不变,但是在js里的确是移除了收藏,这是正确的,后面的点击也都是正确的显示,但是页面加载的第一次就完全是相反的。我想知道有没有人遇到这个问题,是怎么解决的?部分代码如下:

wxml的部分实现代码:

js文件代码:

本人是个新人,wx:if难道还有什么讲究么?

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

3 个回答

  • 源
    2021-06-08

    找到问题所在了,这个是本人的问题,没有加async await,所以这个是先执行完了setData后面才执行的request,所以setData赋值是给的上一次的值,所以显示错误了,写了那么久的代码竟然忘了最基础的浏览器机制问题,看来还是得要多写,多练

    2021-06-08
    有用
    回复
  • 陈宇明
    陈宇明
    2021-06-08

    true等于显示,false等于不显示

    2021-06-08
    有用
    回复
  • 有棱角的胖子
    有棱角的胖子
    2021-06-08

    意思是从后台读到商品是收藏了的,设置为true标记,但是他显示的却是“加入收藏”

    -----if条件里为true显示加入收藏很正确啊

    2021-06-08
    有用
    回复 3
    • 源
      2021-06-08
      这个页面显示的确是我的问题,但是我想问的主要的问题是:商品是收藏的(true),但是他刚进入页面true的内容,点击按钮后,会把收藏给去掉,变为了(false)的内容,也即是判断语句else那里应该显示的内容,实际上显示的却是true的内容,也就是wx:if的内容,后续的点击才会相应的变化但是显示的却是相反的内容,比如wx:if里{{item.iscollect}}的值是true,但是他却显示的是else的内容,当他是false时才会显示wx:if里的内容完全是相反的
      2021-06-08
      回复
    • 源
      2021-06-08
      总的来说刚进入页面wx:if里的值是true,能正确的显示wx:if的内容,点击按钮改变状态后,wx:if里的值是false,还是显示wx:if里的内容,再次点击按钮,wx:if里的值变回true,但是他确显示的是wx:else的内容了,意思是刚进入页面的时候显示是正确的,后续改变状态显示的完全是相反的,所以我就觉得很奇怪,排查了很久还是不懂错在哪
      2021-06-08
      回复
    • 有棱角的胖子
      有棱角的胖子
      2021-06-08回复
      这里的问题吧 commodityList是数组,应该再存个index,commodityList[index][uCommodityID]=false 才会真正改变值
      2021-06-08
      回复
登录 后发表内容