微信小程序数据传递的七种常用方法详解

作者:工具松鼠

时间:2026-10-31

浏览:255

本文汇总了微信小程序中数据传递的多种实现方式,包括URL参数、Storage存储、全局变量、数据绑定、自定义事件、WebSocket及数据库API。重点解析了利用globalData、wx.setStorageSync等API进行本地缓存读写,以及通过navigateTo和eventChannel进行页面间传值的操作。此外,详细说明了父子组件间通过properties接收参数、selectComponent调用方法及triggerEvent触发事件的通信机制,为开发者提供完整的技术参考。

文章目录

URL传参:利用URL参数向小程序页面传输数据。

Storage存储:借助Storage API将数据存入本地,随后在页面中读取。

全局变量:将数据置于小程序全局变量内,供页面读取。

数据绑定:通过数据绑定机制向页面传递数据。

自定义事件:通过自定义事件机制向页面传递数据。

WebSocket:利用WebSocket协议向页面传递数据。

数据库:通过小程序数据库API将数据存储至数据库,供页面读取。

1、使用全局变量传递数据

利用app.js中的globalData存储全局变量,页面通过getApp().globalData获取。

app.js

App({
        globalData:{
            data: { name: 'demo' }
        }
    })

使用组件

let app = getApp()
app.globalData.data

2、使用本地存储数据传递

使用小程序提供的缓存功能。

同步缓存:wx.setStorageSync与wx.getStorageSync。

异步缓存:wx.setStorage与wx.getStorage。

移除本地缓存:wx.removeStorageSync(同步)、wx.removeStorage(异步)。

// 将数据存储在本地缓存中指定的 key 中
    wx.setStorgaeSync('data','hello')
// 从本地缓存中同步获取指定 key 的内容
    wx.getStorageSync('data')
// 从本地缓存中移除指定 key
    wx.removeStorgae('data')

3、使用路由传递数据

传递组件

wx.navigateTo({
      url: 'test?id=1',
      success: (res)=> {
        // 通过 eventChannel 向被打开页面传送数据
        res.eventChannel.emit('acceptDataFromOpenerPage', { data: 'test' })
      }
    })

使用组件

Page({
      onLoad: function(option){
        console.log(option.query)
        // 监听 acceptDataFromOpenerPage 事件,获取上一页面通过 eventChannel 传送到当前页面的数据
        eventChannel.on('acceptDataFromOpenerPage', (data)=> {
          console.log(data)
        })
      }
    })

4、父子组件使用selectComponent('#页面id'),triggerEvent('方法名','值')

<view id='demo' bind:returnDate='handleReturnDate'><view>
    Page({
        handleData(data){
           this.selectComponent("#demo").showModal(data);
        }
        // 子组件传递过来的值
        handleReturnDate(data){
             console.log(data)
        }
    })
    Component({
        methods:{
            // 父组件传递过来的数据
            showModal(data){
                console.log(data)
            },
            submit(){
                // 子组件传递数据给父组件
               this.triggerEvent("returnDate", sportsGuidance);
            }
        }
    })

5、子组件通过properties接收:

父组件parent

parent.wxml
    <view>
        <child :name='jack'></child>
    </view>
parent.json
     {
        "usingComponents": {
            "child":"/child/child",
        },
        "navigationBarTitleText": "父组件的导航标题"
    }

子组件 child

child.wxml

<view>
        父组件传递过来的name:{{name}}
    </view>

child.js

 Component({
    // 接受父组件传递过来的属性
    properties:{
        name:String //简化的定义方式
        //name:{
            //type:String,
            //value:''
        //}
    },
    // 私有数据,可用于模板渲染
    data:{},
    // 组件生命周期声明对象
    lifetime:{
    },
    // 组件所在页面的生命周期声明对象
    pageLifetimes:{
    },
    // 事件响应函数和任意的自定义方法
    methods:{}
})

总结

到此这篇关于微信小程序传值(传递数据)的一些方法汇总的文章就介绍到这了,更多相关微信小程序传值 传递数据内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章