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


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 相关文章推荐
当滚动条滚动到页面底部自动加载增加内容的js代码
May 13 Javascript
JavaScript对象数组的排序处理方法
Oct 21 Javascript
jquery中实现时间戳与日期相互转换
Apr 12 Javascript
JavaScript学习笔记整理_setTimeout的应用
Sep 19 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
Oct 13 Javascript
javascript表达式和运算符详解
Feb 07 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
Apr 27 jQuery
javascript 缓冲运动框架的实现
Sep 29 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
May 06 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
Oct 12 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
Mar 15 Javascript
DWR内存兼容及无法调用问题解决方案
Oct 16 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错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
PHP Directory 函数的详解
2013/03/07 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
全面了解js中的script标签
2016/07/04 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
vue实现整屏滚动切换
2020/06/29 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
python3 与python2 异常处理的区别与联系
2016/06/19 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
python实现弹窗祝福效果
2019/04/07 Python
如何获取Python简单for循环索引
2019/11/21 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
UDP协议功能
2013/01/06 面试题
经理秘书求职自荐信范文
2014/03/23 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
争先创优心得体会
2014/09/12 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书