即使在尝试多次手动链接之后,我也遇到了将库链接到react-native项目的问题。我已经经历了大量“赞美”的教程,但没有成功。
我不是Objective-C / iOS-native的专家,所以为了解决这个问题,我决定创建一个HelloWorld库和一个HelloWorld react-native项目。
使用:
我做了以下事情:
react-native-create-library Lib
。react-native init RNLibTest
。react-native link ...
)以下是代码:
// ./ios/RNLib.h
#import <React/RCTBridgeModule.h>
@interface RNLib : NSObject <RCTBridgeModule>
@end
// ./ios/RNLib.m
#import "RNLib.h"
@implementation RNLib
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(helloWorld:(NSString *)world)
{
return [NSString stringWithFormat:@"hello %@", world];
}
@end
// ./index.js
import { NativeModules } from 'react-native';
const { RNLib } = NativeModules;
console.log(RNLib); // undefined
console.log(NativeModules); // Object: RNLib NOT included
export default RNLib;
// index.ios.js
import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';
import RNLib from 'react-native-lib'; // I installed RNLib with npm and then "linked".
export default class RNLibTest extends Component {
componentDidMount() {
console.log(RNLib); // undefined
}
render() {
return (
<View>
<Text>Hello World</Text>
<Text>{
RNLib.helloWorld("world")
/* throws error "can't read property helloWorld of undefined" */
}</Text>
</View>
);
}
}
AppRegistry.registerComponent('RNLibTest', () => RNLibTest);
有一个新版本的react-native-create-library(v1.1.0)支持v0.40 +。我再次尝试并更新了上面的代码,但我仍然看到同样的问题。
Here is a link to the GitHub issue。我还将react-native-lib library和LibTest app上传到GitHub。
答案 0 :(得分:0)
不确定react-native-create-library
是否支持0.41 RN但是从代码我可以说你需要导入RCT*h
文件,例如<React/RCTBridgeModule.h>
由于这是单一的,你可以在Xcode中创建一个RNLib.h
文件并检查你会得到编译时错误
由于
答案 1 :(得分:0)