zoukankan      html  css  js  c++  java
  • 小程序开发-小程序页面间传递数据的方式

    在小程序开发中,我们小程序的不同页面间经常需要传递一些数据。针对不同的数据要求,有几种不同的传递数据方式。

    1. 页面跳转通过url传递数据

    在使用wx.navigateTo或者wx.redirectTo的时候,可以将部分数据放在url里面,在新页面onLoad的时候获取且初始化。

    //pageA.js
    
    // Navigate
    wx.navigateTo({
      url: '../pageB/pageB?name=jake&gender=male',
    })
    
    // Redirect
    wx.redirectTo({
      url: '../pageB/pageB?name=jake&gender=male',
    })
    
    // pageB.js
    ...
    Page({
      onLoad: function(option){
        console.log(option.name + 'is' + option.gender);
        this.setData({
          option: option
        });
      }
    })
    

    需要注意的是:

    • wx.navigateTo或者wx.redirectTo, 不能跳转到tab说包含的页面
    • onLoad 只会执行一次

    这种方式比较适合两个页面之间传递少量的数据。

    2. 使用全局变量传递数据

    app.js中可以定义全局变量globalData, 旧页面将要传递的数据赋值存放在里面,新页面调用全局变量获取传递数据值。

    // app.js
    
    App({
         // 全局变量
      globalData: {
        name: null
      }
    })
    
    //pageA.js
    ···
    getApp().globalData.name = "jake";
    
    
    //pageB.js
    ···
    this.setData({
      userName: getApp().globalData.name
    });
    
    • 使用的时候通过getApp()拿到存储的信息
    • 这种方式一般适用于多个页面或者全部页面都需要获取使用同一个数据,比如一开始进入首页就获取到的用户信息等;

    3. 使用本地缓存

    使用小程序中的本地缓存Storage,旧页面将传递数据存入缓存中,新页面通过调用获取缓存的API得到数据。

    //pageA.js
    ···
    wx.setStorageSync('sessionId', "session");
    
    
    //pageB.js
    ···
    var sessionId = wx.getStorageSync('sessionId');
    

    注意:

    • Storage每次存入会覆盖掉原来该 key 对应的内容。
    • 如果用户主动删除小程序或因存储空间原因被系统清理,Storage中数据将被清除。
    • 单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。

    这种方式一般适用于即使小程序退出然后再重新进入,也要保留的数据,类似于登录状态的保留等。

  • 相关阅读:
    深入了解 JavaScript 中的 for 循环
    JavaScript 字符串常用操作
    10个习惯助你成为一名优秀的程序员
    Ubuntu日常问题搜集和解决办法
    提升你的开发效率,10 个 NPM 使用技巧
    Redux教程3:添加倒计时
    Redux教程2:链接React
    Redux教程1:环境搭建,初写Redux
    React + Redux 入坑指南
    12个非常实用的JavaScript小技巧
  • 原文地址:https://www.cnblogs.com/limaostudio/p/13639023.html
Copyright © 2011-2022 走看看