在微信小程序的开发中,我们会经常遇到页面间数据传递或者相互影响的问题。在实际的开发过程中,可以通过以下几种方法来实现。
使用全局变量
全局变量实际上是定义了一个全局的对象,并在每个页面中引入。在初始化代码的时候,小程序会读取一个
app.js
的文件,在这里我们可以定义我们所需要的全局变量。
getApp()
方法获取到全局应用对象,可以对全局变量进行读取并更改:
app.js
在项目中是用来做基础配置的,因此不建议将很多变量放在这里配置。一般情况下会将一些持久化的常量配置在这里,对于经常需要变动的量不建议用这个方法。
使用本地缓存本地缓存是微信小程序提供的一个功能,
可以将用户产生的数据做本地的持久化,类似于 NoSQL,可以进行读取和修改的操作。那么在不同的页面之间,如何利用它,进行数据的交互呢?假设我们在 A 页面保存了用户的信息。
onShow
中对数据重新加载
父级往子级页面(模板)的数据传递我们通常会在页面之间进行跳转、重定向的操作。
这时候,我们可以选择将部分数据放在
url
里面,并在新页面
onLoad
的时候进行初始化。
wx.navigateTo
和
wx.redirectTo
不允许跳转到 tab 所包含的页面,只能用
wx.switchTab
跳转。需要注意的是,
wx.switchTab
中的
url
不能传参数。微信新提供的
wx.reLaunch
接口可以传入参数。另外,在页面中我们通常会用到一些组件模板,因此在父子之间也会有相应的数据传递。使用
name
属性,作为模板的名字。然后在这里面使用
is
属性,声明需要的使用的模板。
data
传入,如:
setD
ata
对当前对象管理的
data
进行修改,示例如下:
-
一些常量,可以交由
app.js
管理;需要持久化的量可以放在本地保存。 -
涉及到下级页面或者模板元素的数据,可以通过传入参数的方式传入。
-
后级页面可以通过获取堆栈里的页面对象快速修改上级的数据。