RN与JS交互之-事件机制

本文的应用场景是,原生在获取一些能力之后,需要将结果发送给JS端,由JS端做进一步的处理。

Native端:

1,创建模块

#import <React/RCTBridgeModule.h>

#import <React/RCTEventEmitter.h>

@interface  XXX : RCTEventEmitter < RCTBridgeModule >

@end

2,导出。

RCT_EXPORT_MODULE();

RCT_EXPORT_MEHTOD();

3, 发消息:

[self  sendEventWithName:@"XXXXX"body:@{@"XX1": ''xx1'',

@"XX2": ''xx2''

@"XX3": ''xx3''}];

JS端

1,创建一个Native消息的接受器。

import{ NativeEventEmitter, NativeModules } from 'react-native';

const nativeEventSubscriber =newNativeEventEmitter( NativeModules.XXX );

2,订阅消息。--componentDidMount

const subscription =  nativeEventSubscriber.addListener(

eventName,

(info) => {

//js deal native message body.

);

3,取消订阅。--componentWillUnmount

subscription.remove();

性能优化:

如果native端发出的消息,JS端没有订阅处理,那么对性能来说,这个开销是不必要的。react-native提供了一个模块被订阅和解除订阅的时机。

原生模块根据消息是否被订阅,来决定要不要发出消息事件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容