库没有链接0.41版本的react-native

时间:2017-02-16 18:30:09

标签: ios objective-c xcode react-native react-native-ios

即使在尝试多次手动链接之后,我也遇到了将库链接到react-native项目的问题。我已经经历了大量“赞美”的教程,但没有成功。

我不是Objective-C / iOS-native的专家,所以为了解决这个问题,我决定创建一个HelloWorld库和一个HelloWorld react-native项目。

使用:

  • react-native v0.41.2
  • react-native-cli v2.0.1
  • react-native-create-library v1.0.4
  • xcode v8.2.1

我做了以下事情:

  1. react-native-create-library Lib
  2. react-native init RNLibTest
  3. “成功关联”(手动尝试和react-native link ...
  4. 以下是代码:

    RNLib

    // ./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;
    

    HelloWorld / RNLibTest

    // 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);
    

    我的问题:

    1. 如果代码没有错,那么反应创建本机库创建的xcode项目是不是可以使用较新版本的react-native?
    2. 还有其他人有这些问题吗?如果是这样,你做了什么修复它?
    3. 如果您没有遇到此问题,您使用的是最新版本的react-native吗?
    4. 你使用的是什么版本的xcode,react-native-cli等......?
    5. 是否有人必须降级才能解决此问题?
    6. 2017年2月22日更新

      有一个新版本的react-native-create-library(v1.1.0)支持v0.40 +。我再次尝试并更新了上面的代码,但我仍然看到同样的问题。

      Here is a link to the GitHub issue。我还将react-native-lib libraryLibTest app上传到GitHub。

2 个答案:

答案 0 :(得分:0)

不确定react-native-create-library是否支持0.41 RN但是从代码我可以说你需要导入RCT*h文件,例如<React/RCTBridgeModule.h>

由于这是单一的,你可以在Xcode中创建一个RNLib.h文件并检查你会得到编译时错误

由于

答案 1 :(得分:0)

我不知道导致这个问题的原因,但是当反应原点为0.42时,我决定再试一次。

相同的代码,相同的库,相同的一切但是反应原生0.42,这些是我的结果:

  1. 使用react-native link =&gt;的工作。
  2. 使用手动安装=&gt;的工作。
  3. 我不确定在0.41发生了什么,但它不会发生在0.42!