恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

RN 的EventEmitter 双向通信

  • 首页
  • 资讯中心
  • /
  • RN 的EventEmitter 双向通信

相关资讯

彻底解决Android与微信开放平台签名校验失败:原理、排查与最佳实践 2026/8/1 2:42:33
钩针心形花样围巾全攻略:从图解解读到完美定型 2026/8/1 2:42:33
Source Sans 3字体:免费开源UI字体完整使用指南 2026/8/1 2:42:33

最新资讯

情感文本生成项目部署指南:从环境配置到功能验证
智能论文写作工具Paperxie:从选题到答辩的全流程解决方案
C++20协程异常处理与异步栈调试实战
NumPy导入失败:彻底解决_multiarray_umath模块加载错误
从本地生活电商到 AI RAG:互联网大厂 Java 面试场景完整实战
实践与认识:从哲学原理到技术人的认知行动指南

今日推荐

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

本周热门

G-Helper完整指南:免费开源工具彻底优化华硕笔记本性能
解决全部报错!OpenClaw Windows适配优化+网关修复教程
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

RN 的EventEmitter 双向通信

发布时间:2026/8/1 2:42:33
RN 的EventEmitter 双向通信 React Native 的EventEmitter 双向通信本质是JS 和 Native 之间通过事件机制互相通知。它和普通 Native Module 方法调用不同Native ModuleJS 主动调用 NativeEventEmitterNative 和 JS 都可以主动发送事件通信模型JS | | emit / addListener | React Native Bridge | | Native一、JS → Native主动调用这个不是 EventEmitter 最典型场景一般用 Native Module。例如JSNativeModules.DeviceModule.start();NativeReactMethod public void start(){ //执行原生逻辑 }流程JS | Bridge | Native Module | Java/Kotlin二、Native → JSEventEmitter这是 EventEmitter 最常见用途。例如Android 检测到蓝牙状态变化GPS变化推送消息传感器数据NativesendEvent( onLocationChanged, params );JS监听DeviceEventEmitter.addListener( onLocationChanged, data{ console.log(data); } );流程Android | emit事件 | Bridge | JS Listener三、Android实现 EventEmitter1. Native Module继承public class DeviceModule extends ReactContextBaseJavaModule { private ReactApplicationContext context; public DeviceModule( ReactApplicationContext context ){ super(context); this.contextcontext; } Override public String getName(){ return DeviceModule; } }2. 发送事件private void sendEvent( String eventName, WritableMap params ){ context .getJSModule( DeviceEventManagerModule.RCTDeviceEventEmitter.class ) .emit( eventName, params ); }这里RCTDeviceEventEmitter就是 RN 的事件桥。3. 调用比如WritableMap data Arguments.createMap(); data.putString( message, hello JS ); sendEvent( DeviceEvent, data );四、JS监听RN 新版本推荐import { NativeEventEmitter, NativeModules } from react-native; const { DeviceModule }NativeModules; const emitter new NativeEventEmitter(DeviceModule); const subscription emitter.addListener( DeviceEvent, data{ console.log(data); } );取消监听subscription.remove();否则容易Memory Leak五、JS → Native事件如果 JS 想发事件给 Native例如JS:DeviceEventEmitter.emit( Login, { user:Tom } );但是Native 默认不能直接监听 JS EventEmitter。通常做法JS调用Native ModuleNativeModules.UserModule.login( { user:Tom } );Native:ReactMethod public void login( ReadableMap data ){ }也就是说JS --- Native 推荐: Native Module 不是 EventEmitter六、完整双向模型JS NativeEventEmitter ↑ | Native --- JS emit事件 ↓ Native Module ↑ JS --- Native method调用 Native七、实际项目例子扫码JS启动扫码Scanner.start();↓NativestartCamera();↓扫码成功emit( ScanResult, { code:123456 } );↓JSscannerEmitter.addListener( ScanResult, (result){ console.log(result.code); });八、RN 新架构TurboModule旧架构JS | Bridge | EventEmitter | Native新架构JS | JSI | TurboModule | Native事件通常使用TurboModuleEventEmitter interfaceCodegen例如TypeScript:export interface Spec extends TurboModule { readonly onChange: EventEmitterstring; }Codegen 自动生成绑定。总结方向推荐方式JS调用NativeNative ModuleNative通知JSNativeEventEmitter持续数据流EventEmitter一次请求返回Promise/Callback新架构TurboModule EventEmitter实际开发中蓝牙状态推送GPSNFC扫码原生播放器状态基本都是JS调用Native启动 ↓ Native持续emit事件 ↓ JS监听更新UI这就是 RN EventEmitter 最典型的双向通信模式。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号