React Native iOS原生模块事件发射异常问题
React Native iOS原生模块事件发射异常问题
嗨,我看你在开发RN iOS原生模块时碰到了事件发射的异常问题,先把你给出的模块基础结构整理出来,咱们一步步排查:
Setup
你有一个同时继承RCTEventEmitter并实现TurboModule规范的原生模块,头文件代码如下:
RCTNativeLocalStorage.h
#import <NativeLocalStorageSpec/NativeLocalStorageSpec.h> #import <React/RCTEventEmitter.h> NS_ASSUME_NONNULL_BEGIN @interface RCTNativeLocalStorage : RCTEventEmitter <NativeLocalStorageSpec> @end NS_ASSUME_NONNULL_END
从这个头文件来看,模块的基础继承和协议实现是没问题的,但事件发射失败通常有几个高频踩坑点,你可以逐一排查:
- 有没有重写
supportedEvents方法,返回你需要发射的事件名称数组?这是RCTEventEmitter的必填实现,RN端只有通过这个方法才能知道要监听哪些事件 - 调用
sendEventWithName:body:发射事件时,要确认模块已经被RN正确注册,并且如果有需要的话,startObserving方法已经被触发(比如你在这个方法里添加了原生端的监听) - 因为你同时用了TurboModule规范,要注意TurboModule的事件传递逻辑和传统
RCTEventEmitter有差异,是否需要在TurboModule的配置里额外声明事件支持?
备注:内容来源于stack exchange,提问作者Sampath
相关产品推荐
相关产品推荐

