2

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☆&lt;/Text>
                <Text>{this.state.message}</Text>
            </View>
        );
    }
}

ここでは、「msg」値を未定義として取得しています。助けてください!

4

1 に答える 1