微信小程序收藏功能的实现代码


Posted in Javascript onJune 19, 2020

统一回复,这是我很久以前学习小程序时做的项目,当时是没问题的,最近很多人评论说收藏功能实现不了,但是因为工作原因没空弄

以下是我当时自学小程序的视频地址,里面有收藏的功能的视频,如有需要可以去看看
添加链接描述

detail.wxml中的收藏图标添加属性:

微信小程序收藏功能的实现代码

catchtap是点击事件,wx:if的用法如下:

微信小程序收藏功能的实现代码

detail.js

data: {
  detailObj:{},
  index:null,
  // 是否收藏
  isCollected:false
 },
 handleCollection(){
  let isCollected = !this.data.isCollected
  this.setData({
   // 下面本来是这样子的:isCollected=isCollected,可以简写
   isCollected
  })
  //提示用户
  wx.showToast({
    title: isCollected ? '收藏成功' : '取消收藏',
    icon:'success'
  })
 },

结果图

微信小程序收藏功能的实现代码微信小程序收藏功能的实现代码

看起来是可以了,但是不难发现当你退出页面再进来按钮又被重置了…
所以我们要把按钮状态保存下来.在handleCollection函数中继续添加:

//点击收藏图标后缓存数据到本地
  //把data中的index放到新let出来的index中,因为下面要把index也存进去,要用index来判断你收藏了哪个页面
  let { index } = this.data;
  
  //首先去看一下缓存的数据
  wx.getStorage({
   key:'isCollected',
   success:(data)=>{
    let obj = data.data;
    //如果有,则刷新,没有则追加
    obj[index] = isCollected;
    wx.setStorage({
     key: 'isCollected',
     data: obj,
     success: () => {

     }
    });
   }
  })

onLoad生命周期函数中添加逻辑:

//根据本地缓存的数据判读用户是否收藏当前文章
  let detailStorage = wx.getStorageSync('isCollected')
  //如果没有收藏
  if (!detailStorage){
   //初始化一个空的对象
   wx.setStorageSync('isCollected', {});
  }
  //如果收藏了
  if (detailStorage[index]){
   this.setData({
    isCollected: true
   })
  }

总结

到此这篇关于微信小程序收藏功能的实现代码的文章就介绍到这了,更多相关微信小程序收藏功能内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
表单内同名元素的控制
Nov 22 Javascript
JQuery将文本转化成JSON对象需要注意的问题
May 09 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
May 11 Javascript
js操作iframe兼容各种主流浏览器示例代码
Jul 22 Javascript
js实现楼层导航功能
Feb 23 Javascript
详解JS数组Reduce()方法详解及高级技巧
Aug 18 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
Nov 24 Javascript
详解webpack4升级指南以及从webpack3.x迁移
Jun 12 Javascript
解决bootstrap模态框数据缓存的问题方法
Aug 10 Javascript
js canvas实现橡皮擦效果
Dec 20 Javascript
Electron-vue开发的客户端支付收款工具的实现
May 24 Javascript
TypeScript魔法堂之枚举的超实用手册
Oct 29 Javascript
微信小程序实现搜索框功能及踩过的坑
Jun 19 #Javascript
微信小程序返回上一级页面的实现代码
Jun 19 #Javascript
小程序中的箭头函数的具体使用
Jun 19 #Javascript
在VUE style中使用data中的变量的方法
Jun 19 #Javascript
深入分析JavaScript 事件循环(Event Loop)
Jun 19 #Javascript
原生JS实现微信通讯录
Jun 18 #Javascript
vue+element-ui表格封装tag标签使用插槽
Jun 18 #Javascript
You might like
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
js里面的变量范围分享
2020/07/18 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
Python 错误和异常小结
2013/10/09 Python
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
2018/02/07 Python
Python实现某论坛自动签到功能
2019/08/20 Python
使用python绘制温度变化雷达图
2019/10/18 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
厨房工作人员岗位职责
2013/11/15 职场文书
教师遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
保研专家推荐信范文
2015/03/25 职场文书
小学校长开学致辞
2015/07/29 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
Redis全局ID生成器的实现
2022/06/05 Redis
nginx之内存池的实现
2022/06/28 Servers
Linux安装Docker详细教程
2022/07/07 Servers