Stavo solo cercando di capirlo da solo. In realtà era sorprendentemente facile. Ecco come ho fatto:
EventTests.m
#import "RCTBridgeModule.h"
@interface RCT_EXTERN_MODULE(EventTests, NSObject)
RCT_EXTERN_METHOD(testEvent:(NSString *)eventName)
@end
EventTests.Swift
import UIKit
@objc(EventTests)
class EventTests: NSObject {
// Swift doesn't have synthesize - just define the variable
var bridge: RCTBridge!
@objc func testEvent(eventName: String) {
self.bridge.eventDispatcher.sendAppEventWithName(eventName, body: "Woot!")
}
}
MyModule.js
var React = require('react-native');
var EventTests = require('NativeModules').EventTests;
var {
Component,
NativeAppEventEmitter
} = React;
var testEventName = 'test';
class MyModule extends Component {
constructor(options) {
super(options);
// Register for our test event
NativeAppEventEmitter.addListener(testEventName, (body) => {
console.log(body);
});
// Call objective c function, which will emit our test event
EventTests.testEvent(testEventName);
}
}
module.exports = MyModule;
Assicuratevi anche di includere alcune importazioni nell'intestazione colmare:
#import "RCTBridge.h"
#import "RCTEventDispatcher.h"
fonte
2015-10-25 22:36:53
[vedi questo post] (https://github.com/facebook/react-native/issues/8714#issuecomment-234437319). –