请选择 进入手机版 | 继续访问电脑版

RN与Android 原生交互相关

[复制链接]
为你演绎 发表于 2021-1-2 11:50:36 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
RN与Android 原生交互

一、如何交互

  1. RN -->  原生       原生  --> RN以下两篇文章都做到了 原生与rn的相互通信 只是偏重点差别
复制代码
文章一 https://www.jianshu.com/p/38293c58ab8b
文章一 https://blog.csdn.net/jiankeufo/article/details/103063437
文章二 https://blog.csdn.net/xiangzhihong8/article/details/89519722
文章一重点总结

  1. //从原生Activity内里调用该方法,回传数据给RN界面public static void sendEventToRN(String eventName, @Nullable WritableMap params) {    reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName, params);}//acitvity调用方法WritableMap params = Arguments.createMap();params.putString("eventProperty", "closeRongActivity");RNIMModule.sendEventToRN("IMActivityClose", params);;
复制代码
文章二重点总结

方式一

  1. callBack() {     NativeModules.SomeModule.callbackMethod('params', (result) => {         console.log('callBack ok======>' + result)     }; } @ReactMethod public void callbackMethod(String paramsFromJS, Callback ok) {                 ok.invoke("callback ok"); }
复制代码
方式二

  1. promissCallback() {     NativeModules.SomeModule.promiseMethod('params').then((result) => {         console.log('Promiss ok======>' + result)     }).catch((error) => {         console.log('Promiss error======>' + result)     }); } @ReactMethod public void promiseMethod(String paramsFromJS, Promise promise){         promise.resolve("promise ok");         promise.reject("promise error"); }
复制代码
二、参数如何通报 都能通报什么参数

这篇文章是对 问题一在参数通报和书写方式上的深化
https://blog.csdn.net/weixin_33759269/article/details/88037078
  1. async test() {        try {                var {relativeX,relativeY,width,height,} = await RNTest.measureLayout(100, 100);                console.log(relativeX + ':' + relativeY + ':' + width + ':' + height);          } catch (e) {            console.error(e);    } } test2(){   RNTest.measureLayout(100,100).then(e=>{     console.log(e.relativeX + ':' + e.relativeY + ':' + e.width + ':' + e.height);   }).catch(error=>{     console.log(error);   }); } @ReactMethod public void measureLayout( int tag,int ancestorTag,Promise promise) {     try {         WritableMap map = Arguments.createMap();         map.putDouble("relativeX",1);         map.putDouble("relativeY", 1);         map.putDouble("width", 2);         map.putDouble("height",3);         promise.resolve(map);     } catch (IllegalViewOperationException e) {         promise.reject(e);     } }
复制代码
来源:https://blog.csdn.net/u012339333/article/details/112000395
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )