Day 281/300 微信小程序 监听接口返回的数据后 动态赋值并展示

news/2024/7/20 1:02:09 标签: 微信小程序, 小程序

(一)现状

1、一开始使用的缓存+setTimeout,缺点是不知道什么时候回来;网络速度慢的时候,会有空白的情况,或者是需要连续发,不太好;

2、想实现监听接口返回的数据后 动态赋值并展示的效果;

还可以用 状态管理的方式,mobx-miniprogram

(二)实现的代码

1、app.ts

// app.ts
App<IAppOption>({
  globalData: {
    setting: 'prod', // prod  dev
  },
  // 监听全局变量变化
  watch: function (variate, method) {
    var obj = this.globalData;
    let val = obj[variate]; // 单独变量来存储原来的值
    Object.defineProperty(obj, variate, {
      configurable: false,
      enumerable: true,
      set: function (value) {
        val = value; // 重新赋值
        method(variate, value); // 执行回调方法
      },
      get: function () {
        // 在其他界面调用getApp().globalData.variate的时候,这里就会执行。
        return val; // 返回当前值
      }
    })
  },
  onLaunch() {
    const that = this
    // 登录
    wx.login({
      success: res => {
        // console.log('code---',res.code)
        if(!wx.getStorageSync("token")){
          wx.request({
            url: this.globalData.url + '/login',
            method: 'GET',
            data: {
              "code":res.code
            },
            header: {
              'content-type': 'application/json'
            },
            success (res) {
              const response = res.data.data
              const token = response && response.user_setting && response.user_setting.token || ''
              const template = response && response.user_setting && response.user_setting.template || []
              const balance = response && response.user_setting && response.user_setting.balance || []
              that.globalData.template = template;
              that.globalData.balance = balance;
              wx.setStorageSync("token",token)
              wx.setStorageSync("template",template)
              wx.setStorageSync("balance",balance)
            }
          })
        }
      },
    })

  },
})

2、首页


Page({
  data: {
    balance: '',
  },
  watchCallBack(name: string, value: any) {
    // console.log('watchBack', name, value);
    if (name === 'balance') {
      this.setData({
        balance: value,
      });
    }
  },
  onLoad() {
    // @ts-ignore
    getApp().watch('balance', this.watchCallBack)
  },
  onReady() {
    
  },
  onShow() {

  },
})

参考链接

https://juejin.cn/post/7241101553712955451


http://www.niftyadmin.cn/n/5056710.html

相关文章

风光储一体化能源中心 | 数字孪生智慧能源

自“双碳”目标提出以来&#xff0c;我国能源产业不断朝着清洁低碳化、绿色化的方向发展。其中&#xff0c;风能、太阳能等可再生能源在促进全球能源可持续发展、共建清洁美丽世界中被寄予厚望。风能、太阳能具有波动性、间歇性、随机性等特点&#xff0c;主要通过转化为电能再…

AIGC快速入门体验之虚拟对象

AIGC快速入门体验之虚拟对象 一、什么是AIGC二、AIGC应用场景2.1 代码生成2.2 图片生成2.3 对象生成 三、AIGC虚拟对象3.1 AIGC完全免费工具3.2 快速获取对象3.3 给对象取名3.4 为对象写首诗3.5 和对象聊聊天 一、什么是AIGC AIGC是生成式人工智能&#xff08;Artificial Intel…

数据库:Hive转Presto(二)

继续上节代码&#xff0c;补充了replace_func函数&#xff0c; import re import os from tkinter import *class Hive2Presto:def __int__(self):self.t_funcs [substr, nvl, substring, unix_timestamp] \[to_date, concat, sum, avg, abs, year, month, ceiling, floor]s…

GE IS420UCSBH1A 自动化控制模块

GE IS420UCSBH1A 是一种自动化控制模块&#xff0c;通常用于工业自动化和控制系统中&#xff0c;其主要功能是监测和控制各种工业过程中的设备和信号。以下是该自动化控制模块的一些可能功能和特点&#xff1a; 数据采集&#xff1a; IS420UCSBH1A 模块可以采集来自各种传感器、…

桥梁模板人工费多少钱?

桥梁模板是桥梁工程中不可或缺的一部分&#xff0c;它起到支撑和固定混凝土浇筑的作用。在桥梁建设中&#xff0c;模板人工费用是一个重要的成本因素。那么&#xff0c;桥梁模板人工费到底是多少呢&#xff1f;下面我们来详细了解一下。 首先&#xff0c;需要明确的是&#xff…

CentOS 7下载安装MySQL 5.7以及连接虚拟机CentOS 7数据库教程

## CentOS 7下载安装MySQL 5.7以及连接虚拟机CentOS 7数据库教程 文章目录 ## [CentOS 7下载安装MySQL 5.7以及连接虚拟机CentOS 7数据库教程](https://my.oschina.net/u/3986411/blog/4714780) 通过如下命令查看mariadb的安装包 rpm -qa | grep mariadb通过如下命令卸载mariad…

机器学习 面试/笔试题

1. 生成模型 VS 判别模型 生成模型&#xff1a; 由数据学得联合概率分布函数 P ( X , Y ) P(X,Y) P(X,Y),求出条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)的预测模型。 朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型&#xff08;LDA&#xff09;、限制玻尔兹曼机…

在微信小程序中跳转到另一个小程序(多种实现方式)

方式一&#xff1a; 配置要跳转的appid和小程序页面路径 wx.navigateToMiniProgram({appId: 目标小程序appid,path: 目标小程序页面路径,//develop开发版&#xff1b;trial体验版&#xff1b;release正式版envVersion: release, success(res) {// 打开成功console.log("跳…