微信小程序端的点赞功能其实没什么好介绍的,无非就是调用接口改变点赞状态和点赞数量。需要注意的是取消点赞时的处理,我这里为了减少服务器接口的调用,直接本地存一个变量,修改这里的变量值即可。

由于源码都相对简单,这里就直接贴源码了。

wxml布局源码如下:

 <view class="button-area" catchtap="onLikeClick">
<block wx:if="{{isLike}}">
<text class="text-like-count">{{likeCount}}</text>
<l-icon name="like" color="#FFE57F" size="50" />
</block>
<block wx:else>
<text class="text-like-count">{{likeCount}}</text>
<l-icon name="like" color="#34BFA3" size="50" />
</block> </view>

布局实现主要就是通过判断语句根据不同的点赞状态显示不同的布局。

js 逻辑控制代码如下:

  onLikeClick(e) {
let that = this
if (this.data.bookIsLike) {
// 取消赞
likeModel.cancelLike(this.data.bk_id)
.then(res => {
this.data.bookIsLike = false
if (this.data.like_count > 0){
this.data.like_count = this.data.like_count - 1
}
this.setData({
likeCount: this.data.like_count,
isLike: that.data.bookIsLike
});
}) } else {
//点赞
likeModel.like(this.data.bk_id)
.then(res => {
this.data.bookIsLike = true
this.setData({
likeCount: this.data.like_count + 1,
isLike: that.data.bookIsLike
});
})
}
},

逻辑处理也是根据不同的点赞状态调用相应的接口,根据返回的结果渲染wxml即可。

这里的likeModel就是封装的点赞接口,源码如下:

import {
HTTP
}
from '../utils/http.js' // 获取服务器接口地址
const api = require('../config/config.js'); class LikeModel extends HTTP {
data = null /**
* 喜欢书籍的状态
*/
userLikeIt(bid) {
return this.request({
url: api.getBookLike,
data: {
bkid: bid
},
})
} /**
* 喜欢书籍
*/
like(bid) {
return this.request({
url: api.like,
method: 'POST',
data: {
bkid: bid
},
})
} /**
* 取消喜欢书籍
*/
cancelLike(bid) {
return this.request({
url: api.cancelLike,
method:'POST',
data: {
bkid: bid
},
})
}
} export {
LikeModel
}

以上就是本次的介绍。


扫码关注公众号,轻撩即可。

全栈项目|小书架|微信小程序-点赞功能实现的更多相关文章

  1. 全栈项目|小书架|微信小程序-登录及token鉴权

    小程序登录 之前也写过微信小程序登录的相关文章: 微信小程序~新版授权用户登录例子 微信小程序-携带Token无感知登录的网络请求方案 微信小程序开通云开发并利用云函数获取Openid 也可以通过官方 ...

  2. 全栈项目|小书架|微信小程序-项目结构设计分包

    前面的文章 介绍了服务端的基础搭建以及用户模块的设计,接下来就是在服务端和客户端实现具体的业务了. 本篇文章先来介绍微信小程序开发的项目结构设计,也就是项目分包情况. 由于项目是在<极客时间-9 ...

  3. 全栈项目|小书架|微信小程序-首页水平轮播实现

    首页效果 首页功能主要有 搜索(下篇文章介绍) 图书列表 图书列表 分析一波: 列表是水平滑动 点击列表会有按压效果:布局整体缩小 每个布局的信息从上到下排列分别是:图片.书名.作者.出版社 每个布局 ...

  4. 全栈项目|小书架|微信小程序-实现搜索功能

    效果图 上图是小程序端实现的搜索功能效果图. 从图中可以看出点击首页搜索按钮即可进入搜索页面. 布局样式是:搜索框 + 热搜内容 + 搜索列表. 搜索框使用 lin-ui 中的 Searchbar组件 ...

  5. 全栈项目|小书架|微信小程序-登录回调及获取点赞列表功能

    效果图 这一节介绍,登录回调 以及 喜欢列表 的实现. 登录回调:这里是指在获取登录完成之后,再进行下一步的操作. 比如效果图中我的页面,默认是未登录状态,积分和喜欢列表的数量都没有获取到. 而登录成 ...

  6. 全栈项目|小书架|微信小程序-书籍详情功能实现

    效果图 实现分析 从效果图上分析,书籍详情是通过点击首页的item后进入. 进入详情页之后页面顶部显示书籍的相关信息,同时判断用户是否登录,未登录则弹出一个授权登录窗口. 点击登录之后即可加载出用户评 ...

  7. 全栈项目|小书架|服务器端-NodeJS+Koa2 实现书籍详情接口

    通过上篇文章 全栈项目|小书架|微信小程序-首页水平轮播实现 我们实现了前端(小程序)效果图的展示,这篇文章来介绍服务器端的实现. 书籍详情分析 书籍详情页面如下: 从上图可以分析出详情页面大概有以下 ...

  8. 全栈项目|小书架|服务器端-NodeJS+Koa2实现首页图书列表接口

    通过上篇文章 全栈项目|小书架|微信小程序-首页水平轮播实现 我们实现了前端(小程序)效果图的展示,这篇文章来介绍服务器端的实现. 首页书籍信息 先来回顾一下首页书籍都有哪些信息: 从下面的图片可以看 ...

  9. 全栈项目|小书架|服务器开发-NodeJS 使用 JWT 实现登录认证

    通过这篇 全栈项目|小书架|服务器开发-JWT 详解 文章我们对JWT有了深入的了解,那么接下来介绍JWT如何在项目中使用. 安装 $ npm install jsonwebtoken 生成 Toke ...

随机推荐

  1. shell 命令行参数(基本)

    命令行参数 $0 表示程序名.$1 至 \$9则是位置参数.$# 表示参数的个数.$* 将所有参数当做一个整体来引用$@ 把每个参数作为一个字符串返回,可以使用for循环来遍历$? 最近一个执行的命令 ...

  2. eclipse无法访问sun.misc.Unsafe类的解决办法

    参考:https://www.cnblogs.com/duanxz/p/6090442.html

  3. 批归一化(Batch Normalization)

    之前在几篇博客中说到了权重共享,但都觉得不够全面,这里做个专题,以后有新的理解都在此更新. 1. 减少运算只是锦上添花之前说到权重共享可以减少运算,是的,但这样说好像是可有可无,只是运算量大小的问题, ...

  4. 解决vue视图不渲染

    动态添加对象属性 //声明var travelMainVueObj;travelMainVueObj = new Vue({ "el" : "#portletConten ...

  5. 目前流行前端几大UI框架排行榜

    在前端项目开发过程中,总是会引入一些UI框架,已为方便自己的使用,很多大公司都有自己的一套UI框架,下面就是最近经常使用并且很流行的UI框架. 一.Mint UI 流行指数:★★★★ Mint UI是 ...

  6. Vue 自定义按键修饰符

    如点击F2 触发某个事件 <input type="button" name="" id="" value="添加" ...

  7. 【GMT43智能液晶模块】例程十五:LAN_TCPC实验——以太网数据传输

    源代码下载链接: 链接:https://pan.baidu.com/s/1bFX8_UpUlML29oqoDGaw5g提取码:mrf5 复制这段内容后打开百度网盘手机App,操作更方便哦 GMT43购 ...

  8. Jmetal设置Solution Variables

    Jmetal设置Solution Variables 觉得有用的话,欢迎一起讨论相互学习~Follow Me 首先每个solution都必须使用Problemset初始化 ProblemSet pro ...

  9. Hive学习笔记——parse

    Hive是如何解析SQL的呢,首先拿hive的建表语句来举例,比如下面的建表语句 create table test(id int,name string)row format delimited f ...

  10. Python浮点数数据精度控制

    代码 import decimal from decimal import Decimal, getcontext if __name__ == '__main__': decimal.getcont ...