如何在
Swift中将事件发送到
JavaScript?
有一些Objc代码示例如何将事件发送到JavaScript,但我需要在swift中做什么?
#import "RCTBridge.h" #import "RCTEventDispatcher.h" @implementation CalendarManager @synthesize bridge = _bridge; - (void)calendarEventReminderReceived:(NSNotification *)notification { NSString *eventName = notification.userInfo[@"name"]; [self.bridge.eventDispatcher sendAppEventWithName:@"EventReminder" body:@{@"name": eventName}]; } @end
我只是想弄清楚自己.这实际上非常简单.继承人我是怎么做到的:
原文链接:https://www.f2er.com/swift/318718.htmlEventTests.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;
还要确保在桥接标头中包含一些导入:
#import "RCTBridge.h" #import "RCTEventDispatcher.h"