react-native 原生Android界面向rn界面传递数据
写在前面:本人因技术有限,写的都是一些自己会的或者是能查到的方法,可能会存在一些瑕疵。如果大家有什么更好的方法,欢迎一起讨论。
在react-native开发中,有时候因为rn端的界面之间传递数据不方便,所以需要走一遍原生方法,需要原生方法通过事件的形式将数据再传回rn端。
/*** 接收RN数据数据并通过事件形式返回数据** @param*/@ReactMethodpublic void transferData(ReadableMap rnMap) { ReadableNativeMap newMap = (ReadableNativeMap) rnMap;HashMap map = newMap.toHashMap();Map.Entry entry;Map<String, Object> objectMap = new HashMap<>();for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext(); ) {entry = (Map.Entry) iterator.next();objectMap.put(entry.getKey().toString(), entry.getValue());}WritableMap params = Arguments.makeNativeMap(objectMap);reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit("EventTransferDataNotification", params);}
操作:
①:将rn端传过来的ReadableMap类型数据转化成hashMap;
②:新建一个map,将hashMap里面的数据塞进去
③:使用Arguments.makeNativeMap()方法将map转化成WritableMap
④:使用发送事件的方式将map传递给rn端
解释:1 发送事件的时候只能发送WritableMap类型的数据,所以需要转化;2 Android不能直接操作ReadableMap,需要转化成hashMap(他只有转化成hashMaop方法);3 Arguments.makeNativeMap只能传map,所以需要把hashMap转化一下