首页 > 其他分享 >wepy 传值通信

wepy 传值通信

时间:2022-10-27 14:49:31浏览次数:47  
标签:通信 eventChannel wepy 组件 data events 传值 页面

wepy 传值通信

组件间传值

用于监听组件之间的通信与交互事件的事件处理函数需要写在组件和页面的events对象中

父 => 子:

(一)父 => 子/多子

父组件:this.$broadcast('event', params)

子组件:

events = {
	event() {}
}

(二)父 => 子

父组件: <Child :date.sync="date" />

子组件:

props = {
	date: {
		type: String,
		default: null
	}
}

子 => 父:

子组件:this.$emit('event', params)

父组件:

(一):
events = {  // events中的监听函数
	event() {}
}

(二):
<Child @event.user="getEventData"/>  // 自定义事件

getEventData() {

}

一和二只能选一个,不能共存

组件/页面 => 组件

$invoke是一个页面或组件对另一个组件中的方法的直接调用,通过传入组件路径找到相应的组件,然后再调用其方法。

this.$invoke('ComA', 'someMethod', 'someArgs');

this.$invoke('./../ComB/ComG', 'someMethod', 'someArgs');

自定义事件函数修饰符 .user

@customEvent.user="myFn"

目前共有三种事件后缀:

  • .default: 绑定小程序冒泡型事件,如bindtap.default后缀可省略不写;
  • .stop: 绑定小程序捕获型事件,如catchtap
  • .user: 绑定用户自定义组件事件,通过$emit触发。**注意,如果用了自定义事件,则events中对应的监听函数不会再执行。

页面路由间传值

在不使用vuex的情况下使用微信小程序中的navigateTo方法传值,通过

eventChannel

// a.wpy
// a页面跳转到b页面
wx.navigateTo({
    url: '/pages/b',
    events: {
      // 为指定事件添加一个监听器,获取b页面传送到当前页面的数据
      someEvent: function(data) {
        console.log(data) // {data: 'test'}
      }
    },
    success: function (res) {
      // 通过eventChannel向b页面传送数据
      res.eventChannel.emit('active', { active: 4 })
  }
});
// b.wpy
// 在onLoad生命周期中使用eventChannel监听a页面传过来的数据
 onl oad() {
    const eventChannel = this.$wx.getOpenerEventChannel();
    // 通过eventChannel向a页面传送数据
    eventChannel.emit('someEvent', {data: 'test'});
    // 通过eventChannel监听a页面传过来的数据
    eventChannel.on('active', (data) => {
      console.log(data); // {active: 4}
    });
  },

通过路由直接传参,受到参数大小的限制,一旦超过限制,参数会被截断导致前端页面报错。而参数往往都是直接传的接口中获取到的数据,这些数据的大小无法控制和确定,因此隐患较大。

标签:通信,eventChannel,wepy,组件,data,events,传值,页面
From: https://www.cnblogs.com/zpsakura/p/16832154.html

相关文章

  • Docker 容器间的通信
    前戏容器同学有三种方式:IPDockerDNSServerjoined IP通信两个容器需要互通,必须要有同意网络的网卡,满足条件后容器就可以互相通信了。DockerDNSServer通过IP访问容器虽......
  • docker笔记:docker容器通信参数 --link参数介绍
    1、link参数作用同一个宿主主机上的多个docker容器之间如果需要进行通信,第一种最容易想到的方式就是使用容器自身的ip地址、宿主主机的ip+容器暴露出的端口号来通信,我们知......
  • hyperf/go/springboot通过jsonrpc通信
    一、背景随着用户的增长和业务的增多,单节点服务已经满足不了需求,用hyperf对主业务进行了重构。hyperf是一个后现代的php框架,基于php+swoole,支持协程,解决了php让人诟病的......
  • 关于使用 uni-app 开发小程序时,出现的父子组件传值时,Object 类型的 props,内存地址不同
    太坑了家人扪,谁能想到,在H5正常运行的父子组件props传值,会在小程序出现问题啊!这周,咱上头让俺把原本基于H5开发的网站,改成小程序,还好这也不是第一次了,咱经验丰富,项目......
  • 跳频扩频通信系统的设计及simulink仿真
    设数据速率为100bps,数据调制采用2FSK方式,频率间隔为100Hz。跳频频点为32个,调频频率间隔为50Hz,调频速率为50跳/S。设以伪随机整数控制跳频的载频,接收机中解跳所用的本地恢复......
  • React进阶篇——二、组件与服务器通信
    二、组件与服务器通信1,组件挂载阶段通信componentDidMount是调用服务器API最安全的地方,也是React官方推荐的进行服务器通信的地方。除了在componentDidMount,在componentW......
  • NETCORE - Socket 通信
    NETCORE-Socket通信创建两个.net项目,一个做为服务端,一个做为客户端。项目1:NETCORE.SSocket.Server (.net6 控制台应用程序)创建socket服务类:SocketServe......
  • Linux进程间通信(一)
    进程间通信概念:进程是一个独立的资源分配单位,不同进程之间有关联,不能在一个进程中直接访问另一个进程的资源。进程和进程之间的资源是相互独立的,一个进程不能直接访问另......
  • Vue中父组件向子组件传值无法响应props的变化
    父组件:<template><q-btnroundcolor="pink-4"size="0.9em"text-color="white"denseic......
  • vue组件通信方式有哪些?
    vue组件通信方式一、props(父向子传值----自定义属性)/$emit(子向父传值-----自定义事件)父组件通过props的方式向子组件传递数据,而通过$emit子组件可以向父组件通信......