我定义了一个的ios模块,包含NativeTest.h和NativeTest.m,但在js里是undefined

来源:11-6 React Native原生模块的封装(iOS)

qq_张家景萁_0

2018-06-19

//NativeTest.h
#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>

@interface NativeTest : NSObject<RCTBridgeModule>

@end


//NativeTest.m
#import "NativeTest.h"

@implementation NativeTest

// 导出模块,不添加参数即默认为这个类名
RCT_EXPORT_MODULE();

// 导出方法,桥接到js的方法返回值类型必须是void
RCT_EXPORT_METHOD(doSomething:(NSString *)testStr){
NSLog(@"%@ ===> doSomething",testStr);
}

@end

//js
import { NativeModules } from 'react-native';
NativeModules.NativeTest  //undefined

用课件里面的的分享模块也是 undefined

写回答

1回答

CrazyCodeBoy

2018-06-20

写法是对的;

  1. 检查一下你的NativeTest.h与NativeTest.m有没有正确导入到项目中,用XCode打开iOS项目看这两个文件是否被添加到项目中;

  2. 关闭RN服务器,重新运行项目,或者通过XCode的运行按钮运行项目;

  3. 也可以参考:https://facebook.github.io/react-native/docs/native-modules-ios.html#ios-calendar-module-example

  4. 另外也可以通过如下代码来调试,看下NativeModules中都有哪些输出:

import { NativeModules } from 'react-native';
debugger
console.log( NativeModules);
module.exports = NativeModules.NativeTest;


0
0

React Native技术精讲与高质量上线App开发

一个真实的上线项目,一次完整的开发过程,全面掌握React Native技术

1577 学习 · 727 问题

查看课程