React-Native 与原生的3种交互通信(Android)
来源:互联网 发布:java 常用算法函数 编辑:程序博客网 时间:2024/06/07 22:36
写在前面:最近在学习RN时,了解互相通信的问题,RN提供了三种方式.另外自定义ReactContextBaseJavaModule其实也是可以的,但单纯调用某个方法相对使用麻烦,一般用于封装调用.
大致分为2种情况:
Android主动向JS端传递事件、数据
JS端被动向Android询问获取事件、数据
效果图:
①:Android向JS传递事件
采用RCTDeviceEventEmitter:
在Native模块:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
getTime()主要为JS端调用Native的方法,在内部调用
sendTransMisson进行事件发送。 sendTransMisso这个方法名可以任意取
你喜欢就好,内部参数eventName为事件名,params为传递的事件属性。
在JS端接受:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
在componentWillMount进行监听事件获取传递的事件信息。
②:JS被动向Android询问事件、信息
- CallBack回调接受:
Native部分:
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
CallBack对应的就是JS中的function,JS调用Native模块处理完毕以后将时间回调给JS端。
JS端发送:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
向Native发送了一个名字Allure,在第二个参数接收回调结果。
Callback通俗简单易懂。
- Promise传递
promise在js中很常见,而android也有类似的就是RxJava.可以通过链式将复杂代码结构转换为简短易读的代码。
由于promise不确定成功与失败,需要同步状态。 一般会调用then接口。
Native端:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
在此方法,接受了一个JS端传来的name,并且回传给JS端了一个字典,并存储了age和time两个字段。 需要注意的是使用Promise时,Promise参数需要放在最后一个参数里,否则JS接搜不到消息。
JS端:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
JS端通过then接口来获取Promise的数据。
- React-Native 与原生的3种交互通信(Android)
- React-Native 与原生的3种交互通信(Android)
- React-Native 与原生的3种交互通信(Android)
- React-Native 与原生的3种交互通信(Android)
- React Native与Android原生通信交互详情
- React Native与Android原生通信交互详情
- react native 与原生之间的交互
- (十一)React Native---与原生交互
- React Native 与 原生交互
- React Native 与 原生交互
- React Native与Android通信交互
- React Native与原生的图片交互问题
- React-Native与原生之间的交互简介
- React Native 与原生之间的通信(iOS)
- React Native原生模块与JS模块通信的几种方式
- React native和原生之间的通信
- React Native 与原生层通讯(Android)
- Android中JS与Native原生交互
- II2S通信学习(待完成)
- ACM A+B Problem
- java可视化编程-eclipse安装windowbuilder插件
- swust.oj.1076
- 并查集_hdu1213
- React-Native 与原生的3种交互通信(Android)
- div与span及 block-line块元素与in-line内联元素的区别(H5)
- 动态规划0—1背包问题
- C++使用ADO连接MySql数据库
- mv 命令批量移动文件夹
- 24点游戏
- 类的加载顺序及静态代码块的执行时机
- CJOJ 1160 热浪
- 显示HWC合成(hwc_display_contents_1_t,hwc_layer_1_t数据结构关系)