微信小程序实现列表页的点赞和取消点赞功能!
微信小程序实现列表页的点赞和取消点赞功能
在微信小程序中,实现列表页的点赞和取消点赞功能是一个常见需求。下面我们将一步步地讲解如何实现这个功能。
1. 数据结构设计首先,我们需要设计数据结构来存储点赞信息。假设我们的列表页是展示文章的评论列表,我们可以创建一个 `Comment` 的模型,包含以下属性:
* `id`:评论 ID* `content`:评论内容* `zanCount`:点赞数量* `isZan`:是否已点赞(true/false)
2. 小程序逻辑层设计接下来,我们需要在小程序的逻辑层中实现点赞和取消点赞的功能。我们可以创建一个 `updateZan` 的方法,用于更新评论的点赞信息。
```javascript// updateZan.jsPage({
/
* 更新点赞 */
updateZan: function(e) {
var that = this;
var data = e.currentTarget.dataset;
var mid = data.mid; //评论 ID var cookie_mid = wx.getStorageSync('cookie_mid'); // 用户 ID // 判断是否已点赞 if (that.data.comments[mid].isZan) {
// 取消点赞 that.setData({
'comments[' + mid + '].zanCount': that.data.comments[mid].zanCount -1,
'comments[' + mid + '].isZan': false });
} else {
// 点赞 that.setData({
'comments[' + mid + '].zanCount': that.data.comments[mid].zanCount +1,
'comments[' + mid + '].isZan': true });
}
// 更新评论列表 that.setData({
comments: that.data.comments });
// 存储点赞信息 wx.setStorageSync('comment_zan_' + mid, {
zanCount: that.data.comments[mid].zanCount,
isZan: that.data.comments[mid].isZan });
}
});
```
3. 页面渲染在页面渲染时,我们需要将点赞信息渲染到评论列表中。
```javascript// index.jsPage({
data: {
comments: []
},
/
* 生命周期函数--监听页面加载 */
onLoad: function(options) {
// 获取评论列表 wx.cloud.callFunction({
name: 'getComments',
data: {}
}).then(res => {
this.setData({
comments: res.result.data });
});
}
});
```
4. 点赞和取消点赞的逻辑在 `updateZan` 方法中,我们需要实现点赞和取消点赞的逻辑。具体来说,我们需要:
* 判断是否已点赞* 更新评论的点赞信息* 存储点赞信息5. 页面渲染在页面渲染时,我们需要将点赞信息渲染到评论列表中。
```javascript// index.jsPage({
data: {
comments: []
},
/
* 生命周期函数--监听页面加载 */
onLoad: function(options) {
// 获取评论列表 wx.cloud.callFunction({
name: 'getComments',
data: {}
}).then(res => {
this.setData({
comments: res.result.data });
});
}
});
```
6. 点赞和取消点赞的逻辑在 `updateZan` 方法中,我们需要实现点赞和取消点赞的逻辑。具体来说,我们需要:
* 判断是否已点赞* 更新评论的点赞信息* 存储点赞信息7. 页面渲染在页面渲染时,我们需要将点赞信息渲染到评论列表中。
```javascript// index.jsPage({
data: {
comments: []
},
/
* 生命周期函数--监听页面加载 */
onLoad: function(options) {
// 获取评论列表 wx.cloud.callFunction({
name: 'getComments',
data: {}
}).then(res => {
this.setData({
comments: res.result.data });
});
}
});
```
8. 点赞和取消点赞的逻辑在 `updateZan` 方法中,我们需要实现点赞和取消点赞的逻辑。具体来说,我们需要:
* 判断是否已点赞* 更新评论的点赞信息* 存储点赞信息9. 页面渲染在页面渲染时,我们需要将点赞信息渲染到评论列表中。
```javascript// index.jsPage({
data: {
comments: []
},
/
* 生命周期函数--监听页面加载 */
onLoad: function(options) {
// 获取评论列表 wx.cloud.callFunction({
name: 'getComments',
data: {}
}).then(res => {
this.setData({
comments: res.result.data });
});
}
});
```
10. 点赞和取消点赞的逻辑在 `updateZan` 方法中,我们需要实现点赞和取消点赞的逻辑。具体来说,我们需要:
* 判断是否已点赞* 更新评论的点赞信息* 存储点赞信息