小程序 - 利用缓存设置收藏与未收藏按钮切换

本文介绍了一种在微信小程序中实现文章收藏功能的方法。通过使用wx.getStorageSync和wx.setStorageSync来缓存用户的收藏状态,利用WX提供的条件渲染特性实现收藏图标的状态切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继承上一个详情页面的 js
<view class="circle-img">
    // 为真显示
    <image wx:if="{{collected}}" catchtap="onColletionTap" src=""></image>
    // 否则反之
    <image wx:else catchtap="onColletionTap" src=""></image>
</view>
Page({
    data:{},
    onLoad:{
        this.data.currentPostId = postId; // 临时中转
        // wx.set 设置缓存
        // wx.getStorageSync 获取同步缓存,读取所有缓存状态
        var postsCollected = wx.getStorageSync('posts_collected')
        if(postsCollected){
            //拿到其中一个的状态,并完成数据绑定
            var postsCollected = postsCollected[postId]
            this.setData({
            /* 生产一个 postsCollected 绑定到 collected 开始生效,从而结构中的collected能够读取到,
            从而控制显隐 */
                collected: postsCollected
            })
        }else{
            // 当不存在时
            var postsCollected = {};
            // 状态为false
            postsCollected[postId] = fslse;
            // 把postsCollecte的值放到缓存中
            wx.setStorageSync('posts_collected' , postsCollected);
        }
    },
    // 切换操作
    onColletionTap:function(event) {
        // 通过缓存来确定是否已收藏
        var postsCollected =  wx.getStorageSync('posts_collected');
        // 拿到当前的一个状态,通过变量来传递参数(data),this.data.currentPostId获取postCollecteds的值
        var postCollecteds = postsCollected[this.data.currentPostId];
        // 取反操作的意义是 收藏变成未收藏 , 未收藏变成收藏
        postCollecteds = !postCollecteds;
        // 更新变量,整体缓存对象(postsCollected)的某一个文章(currentPostId) 的缓存值
        postsCollected[this.data.currentPostId] = postCollecteds;
        // 更新文章是否收藏的缓存值
        wx.getStorageSync('posts_collected' , postsCollected);
        // 更新data数据绑定,从而实现切换图片
        this.setData({
            collected: postCollecteds   // 当前的值collected 是 postCollecteds
        })
    }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值