本文主要介绍微信小程序全球状态的相关信息,通过示例代码详细介绍,对大家的学习或工作有一定的参考学习价值。需要它的朋友将和边肖一起学习。
前言
在微信小程序中,可以使用App.js的globalData作为中间桥梁,在页面和组件之间传递信息,包括页面和页面、页面和组件、组件和组件。然而,我们无法及时了解全局数据下的变化。在官方默认的新建小程序的情况下,获取UserInfo的网络操作被延迟,所以写了很多不必要的代码。这种情况在官方案例中是存在的,相信你在发展中也会遇到类似的情况。本文将介绍如何解决这类问题。
需求分析
我认为以下情况是没有全局状态管理的常见操作:
在页面和组件加载和附加这两个生命周期挂钩函数中,将应用程序的全局数据中的一些现有属性分配给页面或组件中的数据。
一开始,有一些异步网络请求,获取的数据是全局使用的。在开始时,此全局数据可能没有相关属性,在请求成功之前,相关属性不会添加到全局数据中。此时,来自全局数据的页面的分配操作可能已经完成,这只是未定义的。因此,在分配给页面和组件之前,需要进一步判断。如果只是这其中的一两个简单,但是需要分配多个页面或者变量,我想你会拒绝,找个偷懒的办法。
从页面和组件上的全局数据分配的一些变量不仅用于判断和显示,我们还可能需要根据用户交互来更改变量的值,因此其他页面和组件中的相同变量需要统一更改。
以上情况我们可提出以下几点需求:
最初加载页面和组件时,尽快从全局数据中获取并分配页面和组件所需的一些属性
及时获取全局数据某个属性的一些变化,并做一些后续的相关操作
更改“页面”和“组件”的值时,其他页面和组件也会进行相同的更改
以下是需求的原始代码
//app.js
App({
globalData: {
用户信息:为空
},
onLaunch(){
wx.getSetting({
成功: res={
if(RES . authset tanshing SEO Company ting[' scope . userinfo ']){
wx.getUserInfo({
成功: res={
this . GlobalData . UserInfo=RES . UserInfo
//需求2
if(this . UserInforeadyCallback){
//这个回调函数的存在意味着页面已经执行了onLoad
//并且没有获得userInfo并分配给页面的数据
//执行这个回调函数,并将其分配给相应的页面
this.userInfoReadyCallback(res)
}
}
})
}
}
})
}
})
//Pages/index/index.js