发展| 微信小程序页面之间如何传输数据?

2024-02-24
来源:网络整理

了解流程注意事项:

之前我们发布过小程序页面传值方式的简单介绍,讲解了小程序开发中两种常见的页面间传值方式。

本期智易程序(微信ID)为大家带来了“倒计时日记”小程序的开发者。 在小程序的开发中,页面间数据传输的方法较多。

微信开发程序小首页怎么设置_微信小程序开发首页_微信小程序首页设计代码

文字| 小日子先生

在微信小程序开发中,我们经常会遇到页面之间数据传输或者相互影响的问题。 在实际开发过程中,可以通过以下方法来实现。

使用全局变量

全局变量实际上定义了一个全局对象,并在每个页面中引入。

初始化代码时,小程序会读取一个app.js文件,我们可以在其中定义我们需要的全局变量。

//app.js ... App({ globalData : { foo : 'bar' } });

然后在页面中,可以通过()方法获取全局对象,并且可以读取和更改全局变量:

//page.js ... var app = getApp() var getFoo = app.globalData.foo app.globalData.foo = 'fun'

由于项目中使用app.js进行基础配置,因此不建议在这里配置太多变量。 一般情况下,这里会配置一些持久常量。 对于需要经常更换的数量,不建议使用此方法。

使用本地缓存

本地缓存是微信小程序提供的功能,可以将用户产生的数据持久化到本地,并且可以类似的读取和修改。

那么如何使用它来实现不同页面之间的数据交互呢?

假设我们在A页面保存了用户的信息。

// pageA.js ... var developer = { name: 'raymond', gender: 'male' } wx.setStorageSync('developer', developer);

通过这样做,数据存储在本地。 B页面需要时,可以直接获取数据池中的数据并进行CRUD操作:

//pageB.js ... // Retrieve var developer = (wx.getStorageSync('developer') || []) // Update developer.name = 'Jiayang' wx.setStorageSync('developer', developer); // Delete wx.removeStorage({ key: 'developer' })

需要注意的是,当返回A页面时,小程序需要重新读取数据,此时可以选择在生命周期中重新加载数据。

从父页面到子页面的数据传输(模板)

我们通常会在页面之间跳转和重定向。 这时,我们可以选择在URL中放入一些数据,并在新的页面上进行初始化。

pageC.js ... // Navigate wx.navigateTo({ url: '../pageD/pageD?name=raymond&gender=male', }) // Redirect wx.redirectTo({ url: '../pageD/pageD?name=raymond&gender=male', })

在D页面,我们可以这样接收传入的参数:

// pageD.js ... Page({ onLoad: function(option){ console.log(option.name + 'is' + option.gender) this.setData({ option: option }) } })

wx。 和wx。 不允许跳转到选项卡包含的页面,只能跳转到wx. 可以用来跳跃。 需要注意的是wx.url中的url。 不能传递参数。

新的wx. 微信提供的接口可以传入参数。

另外,我们通常会在页面中使用一些组件模板,因此父子之间也会有相应的数据传输。

使用 name 属性作为模板的名称。 然后这里使用is属性来声明你需要使用的模板。

{{index}}: {{msg}} Time: {{time}}

然后传入模板需要的数据,如:

<template is="msgItem" data="{{...item}}"/>

Page({ data: { item: { index: 0, msg: 'this is a template', time: '2016-09-15' } } })

除了变量之外,传入模板的还可以是事件方法对象。 例如,模板中的单击事件可以使用该模板传递给元素。

通过获取页​​面对象进行数据操作

该方法的本质是获取其他页面的对象原型,然后通过原型方法修改当前对象管理的数据。 示例如下:

//pageE.js ... Page({ data: { index: 1 } })

跳转到下一页F后,假设F中存在需要修改E中数据的操作,可以使用如下方法:

pageF.js ... Page({ changeIndexInE: function(){ var pages = getCurrentPages(); var prevPage = pages[pages.length - 2]; prevPage.setData({ index: 0 }) } })

该方法可以操作页栈中页的数据,并且可以让下级页管理上级页组的数据。

概括

微信小程序中,页面间数据传输和交互的方式有上述但不限于上述几种,在实际应用中可以结合使用。 例如:

实际应用中结合使用可以更好的管理小程序的数据。

如果本文有什么不妥的地方,可以留言讨论。

本文经知乎程序授权转载。 关注微信ID并在微信后台回复“0109”。 一张图教你怎么玩微信小程序。

微信开发程序小首页怎么设置_微信小程序首页设计代码_微信小程序开发首页

分享