create-react-native-moduleをswiftで使用してネイティブモジュールを作成しています。その後、iOS セットアップのネイティブの公式ドキュメントに反応しました。ドキュメントリンク:: https://facebook.github.io/react-native/docs/native-modules-ios
例を使用して create-react-native-module を作成しました。ネイティブモジュール内に文字列「Hello World」を返す単純な関数を追加しています。
私の「CustomModule-Bridging-Header.h」::
#import <React/RCTBridgeModule.h>
私の「CustomModule.m」::
#import <React/RCTBridgeModule.h>
@interface RCT_EXTERN_MODULE(CustomModule, NSObject)
RCT_EXTERN_METHOD(sampleMethod)
+ (BOOL) requiresMainQueueSetup {
return YES;
}
@end
私の「CustomModule.swift」:
import Foundation
@objc(CustomModule)
class CustomModule: NSObject {
@objc(sampleMethod)
func sampleMethod() -> String {
return "Hello World"
}
}
ネイティブ モジュールにこれらの変更を加えた後、サンプル内に依存関係を再度インストールしました。今私の App.js は次のようになります::
import React, { Component } from 'react';
import { Platform, Text, View } from 'react-native';
import CustomModule from 'react-native-custom-module';
export default class App extends Component {
state = {
message: '--'
};
async componentDidMount() {
const msg = await CustomModule.sampleMethod();
console.log('javascript calling msg::', msg);
this.setState({
message: msg
});
}
render() {
return (
<View>
<Text>CustomModule example☆</Text>
<Text>{this.state.message}</Text>
</View>
);
}
}
ここでは、「msg」値を未定義として取得しています。助けてください!