利用微搭低代码操作微信缓存

Posted 低代码布道师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用微搭低代码操作微信缓存相关的知识,希望对你有一定的参考价值。

在小程序开发时,我们经常需要考虑使用微信缓存,比如将小程序的用户信息写入缓存,又或将用户的身份信息写入缓存。那么我们使用的微搭,作为一款低代码工具是否也可以操作缓存呢?

答案是肯定的,低码中也可以操作缓存,可以在低码编辑器里通过api的形式来使用缓存。干说可能大家对这个概念不是特别理解,我们就开发一个实例,来看一看缓存是如何使用的。

先看一下我们的实例要实现什么功能,日常小程序经常有登录授权的功能,当然了,你第一次打开小程序的时候肯定是要登录并且授权的。那我下次打开小程序的时候,因为已经授权了,就不再希望再次提醒用户了。这个时候我们就需要考虑将用户的信息放入缓存中,在下一次程序加载的时候直接从缓存中获取用户信息。

逻辑说清楚了之后,我们看看我们的页面是什么样子的

未登录的时候我们显示一个头像的图标,然后给一个登录的按钮,如果授权成功我们就显示用户的微信头像和用户昵称,并且将用户的信息放入缓存中。

为了实现这个功能我们先要在全局变量定义一个用户信息的对象

类型选择object,并且设置初始值


  "city": "",
  "gender": "",
  "openid": "",
  "country": "",
  "language": "zh_CN",
  "nickName": "",
  "province": "",
  "avatarUrl": ""


然后在低码编辑器中,给当前页面定义个低码方法,将获取到的用户信息存入缓存


/*
* 可通过 $page.handler.xxx 访问这里定义的方法
* 注意:该方法仅在所属的页面有效
* 如果需要 async-await,请修改成 export default async function() 
*/

export default async function(event, data) 

 
    try 
     wx.getUserProfile(
            desc: '用于完善用户信息',
            success:async (res) => 
            //const data = await app.cloud.dataSources.userinfo_xpw5sxe.wedaCreate(res);
            console.log("res.userinfo",res.userInfo)
            $page.dataset.state.userinfo = res.userInfo
            wx.setStorage(
              key:"userinfo",
              data:res.userInfo
            )
            $page.dataset.state.userinfo.openid = app.dataset.state.useropenid
            let ret =await app.dataSources.userinfo_xpw5sxe.wedaCreate($page.dataset.state.userinfo);
            console.log(ret)
            
    )
    //console.log("userinfo",$page.dataset.state.userinfo)
    //const ret = await app.dataSources.userinfo_xpw5sxe.wedaCreate($page.dataset.state.userinfo);
    //console.log(ret)
     catch (e) 
    console.log('错误代码', e.code, '错误信息', e.message);
  

存入缓存的方法是

 wx.setStorage(
              key:"userinfo",
              data:res.userInfo
            )

他是通过键值对的形式存入缓存,key是键,data是value

存入缓存后,我们可以在小程序启动的生命周期函数里,通过缓存去加载用户信息

export default 
  async onAppLaunch(launchOpts) 
    //console.log('---------> LifeCycle onAppLaunch', launchOpts)
      try 
        const objData = await app.cloud.dataSources.userinfo_xpw5sxe.getopenid();
        app.dataset.state.useropenid=objData.openid;  //赋给全局变量
        var value = wx.getStorageSync('userinfo')
        if (value) 
          // Do something with return value
          app.dataset.state.userinfo = value
        
       catch (e) 
        // Do something when catch error
      
  ,
  onAppShow(appShowOpts) 
    //console.log('---------> LifeCycle onAppShow', appShowOpts)
  ,
  onAppHide() 
    //console.log('---------> LifeCycle onAppHide')
  ,
  onAppError(options) 
    //console.log('---------> LifeCycle onAppError', options)
  ,
  onAppPageNotFound(options) 
    //console.log('---------> LifeCycle onAppPageNotFound', options)
  ,
  onAppUnhandledRejection(options) 
    //console.log('---------> LifeCycle onAppUnhandledRejection', options)
  

从缓存中取值是如下代码

var value = wx.getStorageSync('userinfo')

接着我们就让页面中的用户变量和全局变量中的用户信息保持同步

export default 
  onPageLoad(query) 
    //console.log('---------> LifeCycle onPageLoad', query)
    $page.dataset.state.userinfo = app.dataset.state.userinfo
  ,
  onPageShow() 
    //console.log('---------> LifeCycle onPageShow')
  ,
  onPageReady() 
    //console.log('---------> LifeCycle onPageReady')
  ,
  onPageHide() 
    //console.log('---------> LifeCycle onPageHide')
  ,
  onPageUnload() 
    //console.log('---------> LifeCycle onPageUnload')
  ,

这样就免去了用户每次打开小程序都需要登录的烦恼。善用微信的api可以大大的提高我们的开发效率,当然了里边好多功能也可以提升我们小程序的品质,比如地图功能,你传一个经纬度就可以在地图上显示你店铺的位置,别人可以一键开启导航,这样省下你每次都得费劲口舌才可以给顾客说明你店铺在哪,也可以提升日常的运营效率。看十遍不如动手做一遍,赶紧打开你的编辑器尝试一下吧。

以上是关于利用微搭低代码操作微信缓存的主要内容,如果未能解决你的问题,请参考以下文章

利用微搭低代码实现附件的上传和下载

利用微搭低代码一键创建腾讯会议

利用微搭低代码一键创建腾讯会议

一文回顾腾讯数字生态大会·微搭低代码专场

如何在企业微信中使用微搭低代码

利用微搭低代码实现工单系统