【问题标题】:How to Implement native module in react-native?如何在 react-native 中实现原生模块?
【发布时间】:2015-06-15 15:18:51
【问题描述】:

我正在关注本指南 http://facebook.github.io/react-native/docs/nativemodulesios.html#content

还有这个网站: http://colinramsay.co.uk/2015/03/27/react-native-simple-native-module.html

但无论我在哪里添加 .h 和 .m 文件,我总是会收到错误消息: Class ClassName 没有导出你忘记使用 RTC_EXPORT_MODULE() 了吗?

即使它与 react-native 文档中的示例代码相同,谁能指导我在哪里添加 .h 和 .m 文件并将它们正确链接到项目? 谢谢。

【问题讨论】:

    标签: ios facebook react-native


    【解决方案1】:

    原生模块 API 发生了变化,文档似乎没有相应更新。从我文章中的示例来看,SomeString.m 应该是这样的:

    //  SomeString.m
    #import "SomeString.h"
    
    @implementation SomeString
    
    RCT_EXPORT_MODULE();
    
    RCT_EXPORT_METHOD(get:(RCTResponseSenderBlock)callback)
    { 
      // Change this depending on what you want to retrieve:
      NSString* someString = @"something";
    
      callback(@[someString]);
    }
    
    @end
    

    这最终得到了想要的结果,你可以像以前一样从 JS 调用它。看起来这才刚刚发生:

    https://github.com/facebook/react-native/commit/0686b0147c8c8084e4a226b7ea04585362eccea8

    【讨论】:

    • 太棒了,就是这样,我改变了它,一切都开始工作了。立即成为粉丝!
    【解决方案2】:

    您也可以在要导出的任何方法中添加一个普通的RCT_EXPORT();。像魅力一样工作。

    【讨论】:

    • 这种方法已被弃用,现已被移除。它使用起来稍微方便一些,但不如新系统好,因为我们无法对方法参数进行正确的类型验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 2019-02-25
    相关资源
    最近更新 更多