如果它是重复的,请原谅。我正在开发一个应用程序,该应用程序使用react-native在第三方Instagram应用程序中共享其帖子。我到处搜索,发现没有这样的功能可用于 react-native,但它在本机 ios 和本机 android 中可用。我正在尝试在本机ios(objective-c(中实现,并为此找到了很多代码,但我有点困惑,无法开发我的功能。谁能在这里一步一步地解释一下?我已经通过执行以下代码将本机ios文件与反应本机链接
。.h 文件
#ifndef Instashare_h
#define Instashare_h
#import "React/RCTBridgeModule.h"
@interface Instashare : NSObject <RCTBridgeModule>
@end
#endif /* Instashare_h */
.m 文件
#import "Instashare.h"=
#import "React/RCTLog.h"
@implementation Instashare
// This RCT (React) "macro" exposes the current module to JavaScript
RCT_EXPORT_MODULE();
// We must explicitly expose methods otherwise JavaScript can't access anything
RCT_EXPORT_METHOD(get)
{
NSLog(@"explanation code here");
}
@end
反应本机.js文件
var InstagramShare = NativeModules.Instashare;
export default class ShareComponents extends PureComponent {
_handleInsta = () => {
InstagramShare.get();
}
render{
return(
<TouchableOpacity
onPress={() => this._handleInsta()}
>
<Text>Instagram</Text>
</TouchableOpacity>
);
}
}
原生模块只是一个实现RCTBridgeModule
协议的 Objective-C 类。如果您想知道,RCT是ReaCT的缩写。
// Instashare.h
#import <React/RCTBridgeModule.h>
@interface Instashare : NSObject <RCTBridgeModule>
@end
React Native 不会将 Instashare 的任何方法暴露给 JavaScript,除非明确告知。这是使用RCT_EXPORT_METHOD()
宏完成的:
#import "Instashare.h"
#import <React/RCTLog.h>
@implementation Instashare
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(get:(NSString *)name location:(NSString *)location)
{
NSLog(@"explanation code here");
}
@end
用法
import {NativeModules} from 'react-native';
var Instashare = NativeModules.Instashare;
Instashare.get();