小程序页面间有哪些传递数据的方法

小程序页面间有哪些传递数据的方法,第1张

主要有:参数传递、localstorage传递、全局变量传递和页面对象传递等。

最常见的是参数传递,也就是在地址后面加上参数,然后在onload函数里面获取参数。

localstorage传递,就是把需要传递的参数保存到本地,在需要获取的页面当中获取保存的值,并且可以在不需要的时候删除。

全局变量传递,就是在页面当中改变app全局的某些变量,并且在需要获取的页面当中获取全局变量的值。

页面对象传递,就是获取当前的页面对象数组,找到相应的页面,并且执行该页面的方法进行直接赋值,实现传递参数的目的。

js ---------- JavaScrip文件

json -------- 项目配置文件,负责窗口颜色等等

wxml ------- 类似HTML文件

wxss ------- 类似CSS文件

在根目录下用app来命名的这四中类型的文件,就是程序入口文件。

appjson

必须要有这个文件,如果没有这个文件,IDE会报错,因为微信框架把这个作为配置文件入口,

你只需创建这个文件,里面写个大括号就行

以后我们会在这里对整个小程序的全局配置。记录了页面组成,配置小程序的窗口  背景色,配置导航条样式,配置默认标题。

appjs

必须要有这个文件,没有也是会报错!但是这个文件创建一下就行 什么都不需要写

以后我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量。

appwxss

这个文件不是必须的。因为它只是个全局CSS样式文件

appwxml

这个也不是必须的,而且这个并不是指主界面哦~因为小程序的主页面是靠在JSON文件中配置来决定的

有了这两个文件你运行程序,IDE就不会报错了,也意味着这是最简单的微信小程序

{

appjson

appjs

}

注意,这里的session不是小程序维护的那个通过wxlogin()方法维护的session,而是我们自己的服务端的session。

由于正常情况下,客户端向服务端发起请求时,session信息是存放在cookie中以请求头的方式带回给服务端的,而请求头中具体的信息就是session的id,如下图所示

标红的就是我们需要在请求时携带返回给服务端的请求头 所以我们需要的就是这个JESSIONID的值了。刚好,微信小程序也提供了对请求头的支持。

解决办法:1、在用户登录时,服务端将用户的sessionId返回。

2、小程序保存sessionId,在之后的每次请求中在请求头中携带sessionId

服务端关键代码:

获取sessionId的方法,只要获得request对象就可以轻松获取到了

Sting sessionId = requestgetSession()getId();

把sessionId返回

   //登录时的业务代码responsegetWriterwrite(sessionId); //把sessionId返回给前台

小程序端登录后,把sessionId存入全局变量,appjs中是个存放全局变量的好地方。

//登录后的逻辑处理

getApp()globalDataheaderCookie = 'JSESSIONID=' + _datasessionId;

appjs中代码

globalData:{

header:{'Cookie': ''} //这里还可以加入其它需要的请求头,比如'x-requested-with': 'XML>

小程序端请求时带上sessionId

var header = getApp()globalDataheader; //获取appjs中的请求头

 wxrequest({

   url: "localhost:8080/xx/xx",

   header: header, //请求时带上这个请求头

   success:function(res){

}

}

建议封装自己的请求信息,处理 一些通用的逻辑。

const app = getApp();

Page({

onLoad() {

   appglobalDatanum1 = thisdatanum3;

}

})

获取到小程序全局唯一的 App 实例。

解决办法 为复制一份this的指向到变量中,这样在函数执行过程中虽然this改变了,但是that还是指向之前的对象。

大家知道this是指当前对象,只是一个指针,真正的对象存放在堆内存中,this的指向在程序执行过程中会变化,因此如果需要在函数中使用全局数据需要合适地将this复制到变量中。

this作用域分析:

1在Page({})里面,this关键字指代Page({})整个对象

2因此可以通过this关键字访问或者重新设置Page({})里data的变量

3然而在loadData函数中使用了wxrequest({})API这个方法导致在wxrequest({})里没办法使用this来获取Page({})对象

4虽然在wxrequest({})里没法使用this获取Page({})对象,但是可以在wxrequest({})外面先把this存在某个变量中,所以就有了 var that =this 这个声明。此时that指代Page({})整个对象,这样子就可以在wxrequest({})里使用that访问或者重新设置Page({})里data的变量

以上就是关于小程序页面间有哪些传递数据的方法全部的内容,包括:小程序页面间有哪些传递数据的方法、小程序基本构成、微信小程序用户登录的全局变量是否有有效期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9321293.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存