Ada*_*ski 5 objective-c ios react-native
尝试在本机模块中调用方法时出现以下错误:
'undefined' is not an object (evaluating 'ScaleController. updateScaleFromJSON')
我的原生模块Objective-C文件 -
RCTScaleController.h:
#ifndef RCTScaleController_h
#define RCTScaleController_h
#import "RCTBridgeModule.h"
@interface RCTScaleController : NSObject <RCTBridgeModule>
@end
#endif /* RCTScaleController_h */
Run Code Online (Sandbox Code Playgroud)
RCTScaleController.mm:
#import "RCTScaleController.h"
#import "ScaleControllerObjC.h"
#import "RCTLog.h"
@implementation RCTScaleController
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(updateScaleFromJSON:(NSString *)jsonString)
{
RCTLogInfo(@"About to send json: %@", jsonString);
ScaleControllerObjC *scaleController = [[ScaleControllerObjC alloc] init];
[scaleController updateScaleFromJSON:jsonString];
}
Run Code Online (Sandbox Code Playgroud)
在我的JS文件中需要它:
var ScaleController = require('react-native').NativeModules.RCTScaleController;
Run Code Online (Sandbox Code Playgroud)
在这里它被调用导致错误:
ScaleController.updateScaleFromJSON (JSON.stringify (scale));
Run Code Online (Sandbox Code Playgroud)
我按照我见过的例子,不知道这里有什么问题.
And*_*dru 15
通常,如果一个模块带有前缀RCT,在NativeModules中它只是它之后的子串,所以你不必重命名你的整个模块,只需要用不同的方式调用它NativeModules.
例:
因此,例如在Android的情况下,如果您的getName()函数确实返回了类似"RCTMyName"的名称:
@Override
public String getName() {
return "RCTMyName";
}
Run Code Online (Sandbox Code Playgroud)
然后回到Javascript中,你必须在没有 它的情况下调用它RCT,即只需MyName:
import { NativeModules } from 'react-native';
export default NativeModules.MyName;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7577 次 |
| 最近记录: |