微信小程序入门与实战之缓存机制与异步API的async和awai

app.js的作用和意义

App.js写逻辑内容,内置有函数,有三大作用

1、判断用户以什么方式进入小程序
2、获取用户信息
3、定义全局数据

每个小程序都需要在 app.js 中调用 App 方法注册小程序实例,绑定生命周期回调函数、错误监听和页面不存在监听函数等。

// app.js
App({
  onLaunch (options) {
    // Do something initial when launch.
  },
  onShow (options) {
    // Do something when show.
  },
  onHide () {
    // Do something when hide.
  },
  onError (msg) {
    console.log(msg)
  },
  globalData: 'I am global data'
})

app.js中保存全局变量

在app.js中设置全局变量:
在这里插入图片描述

在具体页面的js文件中获取全局变量并打印:
在这里插入图片描述
在这里插入图片描述

小程序缓存的增删查改与清除

    wx.setStorageSync('flag',true)//增加缓存
    wx.setStorageSync('flag', false)//修改缓存
    wx.setStorageSync('flag1', 1)
    //wx.clearStorageSync() 清除所有缓存
    //wx.removeStorageSync('flag') 删除缓存
    const flag=wx.getStorageSync('flag1')
    console.log(flag)

在这里插入图片描述
在调试器的storage中我们可以查看到当前小程序的缓存
在这里插入图片描述
我们在开发工具中也可以直接清除缓存:
在这里插入图片描述

异步函数的几个方案:回调函数、promise与await

回调函数:

    const flag=wx.getStorage({
      key:'flag',
      success(value)
      {
        console.log(value.data)
      }
    })

promise:

    const flag=wx.getStorage({
      key:'flag',
    })
    flag.then((value)=>{
      console.log(value)
    })

await(这里我们写在onload函数里,需要在onload函数名前加async):

    const flag=await wx.getStorage({
      key:'flag',
    })
     console.log(flag)

文章收藏

文章详情页编译模式我们设置启动参数可以显示出具体的页面
在这里插入图片描述
我们为具体的文章的收藏图片设置点击事件:

 <image bind:tap="onCollect"src="/images/collection-anti.png"></image>

在界面的onload的函数中我们通过options参数拿到传递过来的pid,为了使不同函数之可以共享pid,在data里面创建一个pid:
在这里插入图片描述
javascript对象的修改:
在这里插入图片描述
收藏图标的点击事件里进行缓存:

  onCollect(event)
  {
    //假设 未收藏->收藏
    //哪篇文章被收藏
    //数据结构 多篇文章是否被收藏
    const posts_collected={}
    posts_collected[this.data._pid]=true
    wx.setStorageSync('posts_collected', posts_collected)
  },

收藏与未收藏(图标)的切换,要改变UI状态要进行数据绑定(用条件渲染):
页面初始数据设置未被收藏:
在这里插入图片描述
收藏图标点击事件中数据绑定:
在这里插入图片描述
wxml代码中使用条件渲染:
在这里插入图片描述
但是按照我们上面的实现方式,在每次刷新页面的时候文章都会变成未收藏,所以我们初始化的时候要从缓存中读取:
在这里插入图片描述

缓存如何不被覆盖

若文章收藏情况没有被缓存,我们还从缓存中获取这时候获取到的就是undefined,undefined默认是false,完善逻辑可以加个判断:
在这里插入图片描述
但是我们前面写的代码还是有问题,我们在点击事件中创建了一个postCollected,所以每次点击事件都会在缓存中覆盖这一个:
在这里插入图片描述
解决办法:把postCollected在data中设置,在初始化函数中获取到缓存,在点击事件中直接使用获取到的缓存,而不是重新创建:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
完善代码,使已收藏时点击可以变成未收藏:
在这里插入图片描述

showToast接口的应用

在这里插入图片描述
在这里插入图片描述

showToast换成showModal

在这里插入图片描述

在这里插入图片描述

showModal的回调函数和promise

wx.showModal({
  title: '提示',
  content: '这是一个模态弹窗',
  success (res) {
    if (res.confirm) {
      console.log('用户点击确定')
    } else if (res.cancel) {
      console.log('用户点击取消')
    }
  }
})

在这里插入图片描述

showActionSheet的使用

在这里插入图片描述
为分享图标设置点击事件:

  onShare()
  {
      wx.showActionSheet({
        itemList: ['分享到QQ','分享到微信','分享到朋友圈'],
        success(res)
        {
          console.log(res)
        }
      })
  }
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gujunhe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值