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


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 相关文章推荐
Javascript 函数对象的多重身份
Jun 28 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
Mar 24 Javascript
Javascript 面向对象编程(一) 封装
Aug 28 Javascript
js实现快速分享功能(你的文章分享工具)
Jun 25 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
Nov 22 Javascript
轻量级javascript 框架Backbone使用指南
Jul 24 Javascript
详解AngularJS控制器的使用
Mar 09 Javascript
Javascript动画效果(1)
Oct 11 Javascript
基于JavaScript实现类名的添加与移除
Apr 23 Javascript
Javascript继承机制详解
May 30 Javascript
JavaScript基础之this详解
Jun 04 Javascript
基于Vue 撸一个指令实现拖拽功能
Oct 09 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判断指定时间段的2个方法
2014/03/14 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
使用Node.js配合Nginx实现高负载网络
2015/06/28 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
JQuery Mobile实现导航栏和页脚
2016/03/09 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
常用的js方法合集
2017/03/10 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
matplotlib绘图实例演示标记路径
2018/01/23 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
2018/05/16 Python
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
python实现多线程端口扫描
2019/08/31 Python
python exit出错原因整理
2020/08/31 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
高中生自我评语大全
2014/01/19 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
债务纠纷委托书
2014/08/30 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
2016年会开场白台词
2015/06/01 职场文书
学历证明样本
2015/06/16 职场文书
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA