小程序中wx:for()获取到了列表,每个列表都有点赞功能,如何实现加1和减1的功能呢?

1.后台返回数据列表获取完整,根据is_like来看是否已经点赞或没有点赞,然后点击进行加1 ,还有变换点赞图形。
2.代码如下:

 <navigator class="group_button-item {{wcItem.is_like}}" url="" bindtap="praise">
              <image class="group_button-image" src="../images/dy_praise.png"  data-like="{{wcItem.is_like}}" data-objid="{{wcItem.id}}"></image>
              <image class="group_button-image" src="../images/dy_praise_active.png" data-like="{{wcItem.is_like}}" data-objid="{{wcItem.id}}"></image>
              <text class="group_button-text">{{wcItem.like_count}}</text>
            </navigator>
            <navigator class="group_button-item" url="./detail/detail?id={{wcItem.id}}">
              <image class="group_button-image" src="../images/dy_comment.png"></image>
              <text class="group_button-text">{{wcItem.comment_count}}</text>
            </navigator>
            praise:function(e){
    var praiseUrl = '';
    var obj_id = e.target.dataset.objid;
    var like = e.target.dataset.like;
    console.log()
    if(like == "n"){
      like = "y";
    }else{
       like = "n";
    }
    console.log(e);
    wx.request({
      url: praiseUrl,
      method: 'POST',
      data:{
        user_id:wx.getStorageSync('user_id'),
        obj_id:obj_id,
        click_like:like
      },
      header: {
        'content-type': 'application/json'
      },
      success: function (res) {
        console.log(like)
      
  
    }
  })
  },
阅读 9.3k
3 个回答

this.setData(),改变页面数据。看看文档就行

最好的情况下是点赞后局部页面直接变更, 但是微信小程序中如果要变更页面数据都需要通过 setData() 方法, 然而又是在列表场景中, 所以可能需要重新渲染整个列表

创建一个数组,然后setData来进行加减。