官方教程中有讲述在RN中如何集成原生模块(iOS日历组件)
这里我也写了一个简单的示例,目标是 实现消息提示框(Toast)
源码还在这里
一、iOS
在React Native中,一个“原生模块”就是一个实现了“RCTBridgeModule”协议的Objective-C类,其中RCT是ReaCT的缩写。
1、原生部分:
NativeToast.h
1234567#import "RCTBridgeModule.h"#import "RCTLog.h"#import <UIKit/UIKit.h>@interface NativeToast : NSObject <RCTBridgeModule>@endNativeToast.m
必须明确的声明要给Javascript导出的方法,否则React Native不会导出任何方法。声明通过RCT_EXPORT_METHOD()宏来实现:
|
|
- 通过上边的代码我们就导出了一个“showMessage”的方法,接受三个参数,这个方法可以在JS内部调用
2、JS中调用
ListViewLoadMore/app/components/ProductImageShow.js
import {
//...
NativeModules,
} from 'react-native'
class ProductImageShow extends Component {
//...
_toast() {
// showMessage('提示信息内容','显示时长1~5秒','位置['top','center','bottom']')
NativeModules.NativeToast.showMessage(
`提示信息\n可以控制显示的时间\nshowTime:[1~5]\n可以控制提示信息显示的位置\nposition:['top','center','bottom']`,
5,
'center'
)
}
render() {
return (
<View style={ styles.mainView }>
//...
<TouchableOpacity onPress={ this._toast.bind(this) }>
<View style={ styles.bottomTitleView }>
<Text style={ styles.bottomTitle }>点击图片可以去图文详情页</Text>
</View>
</TouchableOpacity>
</View>
)
}
}
3、效果图
二、Android
####….
待补充。。。。