当前位置: 首页 > article >正文

微信小程序-页面通信

文章目录

  • 微信小程序-页面通信
    • EventChannel
    • PubSubJS

微信小程序-页面通信

EventChannel

可以通过 wx.navigateTo 打开的新页面,这两个页面会建立一个数据通道,可以借助 EventChannel 实现监听、发射数据。

第一个页面:

wx.navigateTo({
    url: "/pages/api/event/event?name=小明&age=18",
    // 监听事件
    events: {
        onReceive: (data) => {
            console.log(data)
            this.setData({
                userName: data.userName,
                userAge: data.userAge,
            })
        },
    },
    success: (res) => {
        // 发射事件
        res.eventChannel.emit("onEvent", { sex: "男", address: "北京" })
    },
})

第二个页面:

Page({
    data: {
        name: "",
        age: 0,
        sex: "",
        address: "",
    },
    eventChannel: null,
    sendEvent() {
        // 发射事件
        this.eventChannel.emit("onReceive", { userName: "张三", userAge: 28 })
    },
    onLoad(options) {
        this.eventChannel = this.getOpenerEventChannel()
        // 监听事件
        this.eventChannel.on("onEvent", (data) => {
            this.setData({
                sex: data.sex,
                address: data.address,
            })
        })
        this.setData({
            name: options.name,
            age: options.age,
        })
    },
})

PubSubJS

可以借助第三方库 PubSubJS 实现多级页面和兄弟组件间的数据通信。

一、安装库:

npm i pubsub-js

二、微信小程序 --> 工具 --> 构建 npm

三、引入:

import PubSub from "pubsub-js"

使用:

组件一:

import PubSub from "pubsub-js"

Component({
  data: {
    book: {
      name: "西游记",
      roles: ["唐僧", "孙悟空", "猪八戒", "沙和尚"],
    },
  },
  methods: {
    sendData() {
      // 发送事件
      // 参数一:事件名
      // 参数二:传递的数据
      PubSub.publish("myevent", {
        bookName: this.data.book.name,
        bookRoles: this.data.book.roles,
        author: "吴承恩",
      })
    },
  },
})

组件二:

import PubSub from "pubsub-js"

Component({
  data: {
    description: "",
  },
  lifetimes: {
    attached() {
      // 订阅事件
      // 参数一:事件名
      // 参数二:回调函数
      PubSub.subscribe("myevent", (msg, data) => {
        this.setData({
          description: `${data.bookName} - ${data.bookRoles} - ${data.author}`,
        })
      })
    },
  },
})

http://www.kler.cn/news/358849.html

相关文章:

  • 架构设计笔记-19-大数据架构设计理论与实践
  • 豆包大模型接口调用
  • 【合集】GPT国内外免费在线AI大模型,持续更新!
  • 【厦大主办,EI检索】2024年计算机视觉与图像处理国际学术会议 (CVIP 2024,11月15-17日)
  • Ubuntu的Qt编译环境配置
  • python中的global和nonlocal关键字以及闭包和模块
  • [每日一练]游戏玩法分析(为什么使用子查询而不是having字段,为什么必须使用联合查询)
  • Flutter Scaffold组件
  • STM32CubeMX【串口收发USART】
  • Spring Boot:中小型医院网站开发新选择
  • 【4.8】图搜索算法-BFS解单词接龙
  • vr体验馆计时收银软件试用版下载 佳易王VR游戏厅计时计费管理系统使用操作教程
  • Map转Map
  • 【stm32】DMA的介绍与使用
  • 从0开始学Python-day6
  • Android视频编解码 MediaCodec使用(2)
  • 计算机毕业设计PySpark+Django深度学习游戏推荐系统 游戏可视化 游戏数据分析 游戏爬虫 Scrapy 机器学习 人工智能 大数据毕设
  • docker 和 containerd 关系
  • 现代开源个人航班跟踪系统AirTrail
  • 【OD】【E卷】【真题】【100分】热点网站统计(PythonJavaJavaScriptC++C)