我想從React Native向Swift實現的模塊發送一個字符串,然後從本地模塊獲取String結果作爲回調以供進一步使用。React Native Swift回調
這裏就是我的了:
//HelloWorldModule.m
#import "RCTBridgeModule.h"
@interface RCT_EXTERN_MODULE(HelloWorldModule, NSObject)
RCT_EXTERN_METHOD(sayHelloWorld:(NSString *)name callback:(RCTResponseSenderBlock *)successCallback)
@end
除了迅速落實:
// HelloWorldModule.swift
import Foundation
import UIKit
import AVFoundation
@objc(HelloWorldModule)
class HelloWorldModule: NSObject {
@objc func sayHelloWorld(name: String, callback successCallback: RCTResponseSenderBlock) {
NSLog("Log from Swift: \(name)")
successCallback([name])
}
}
,最後無論進入ReactNative部分:
// requiring the Swift module in React Native
var HelloWorldModule = require('react-native').NativeModules.HelloWorldModule;
...
// using it somewhere in the render function
render: function() {
return (
<Text>
Hello World Module answers: {this.hwmExt("Jadzia Dax")}
</Text>
);
},
hwmExt: function(name) {
return HelloWorldModule.sayHelloWorld(name, function(result) {
var hwAnswer = "swiftCB: " + result;
console.log(hwAnswer);
return hwAnswer;
});
}
線console.log(hwAnswer);
打印出我期望它是swiftCB: Jadzia Dax
但結果不是ing過去了嗎?我在Swift的方法定義中做了什麼錯誤,因爲我總是不確定嗎?不知怎的,這個問題已經矇蔽:/ React Native Swift模塊回調不幸在RN文檔中沒有涉及。
偉大的發現,短而甜美的文章! –