ReactNative学习笔记-Native主动发送消息给JS
2016-07-21 14:39
483 查看
当我们原生Native 主动发送消息给JS时,我们可以写一个
params是我们发送给JS的参数,writableMap这种类型发给JS,JS会把参数识别为字典,我们可以在JS中跟操作字典一样拿到参数
ReactContext是一个继承了ReactContext的对象,我们在ReactContextBaseJaveModule中可以拿到一个这样的对象,例如这样子调用
这样我们在Native中就把我们要发送给JS的信息给发送出去了,那JS应该怎么收到这样的消息呢,ReactNative有一种观察者模式的监听只要我们注册监听就可以了。
可以看出eventName 这个参数是我们JS监听的标志,标志我们要监听哪件事件,而event则是我们的参数,前面说过writableMap声明的对象在JS中会被当成字典,所以我们可以通过event[参数名]去拿到我们的值。
注意:
如果你所取的参数并不存在,则会返回你undefine.
private void sendEvent(ReactContext reactContext, String eventName, @Nullable WritableMap params) { if (reactContext==null) { }else{ reactContext.getJSModule (DeviceEventManagerModule.RCTDeviceEventEmitter.class) .emit(eventName, params); } }
params是我们发送给JS的参数,writableMap这种类型发给JS,JS会把参数识别为字典,我们可以在JS中跟操作字典一样拿到参数
ReactContext是一个继承了ReactContext的对象,我们在ReactContextBaseJaveModule中可以拿到一个这样的对象,例如这样子调用
WritableMap params = Arguments.createMap(); params.putBoolean("isLogin",true); params.putString("name","jredthree"); sendEvent(getReactApplicationContext(), "login", params);
这样我们在Native中就把我们要发送给JS的信息给发送出去了,那JS应该怎么收到这样的消息呢,ReactNative有一种观察者模式的监听只要我们注册监听就可以了。
componentWillMount(){ var listenerNative = DeviceEventEmitter.addListener('login', (event)=> { alert("event listener success"+event["name"]); }) };
可以看出eventName 这个参数是我们JS监听的标志,标志我们要监听哪件事件,而event则是我们的参数,前面说过writableMap声明的对象在JS中会被当成字典,所以我们可以通过event[参数名]去拿到我们的值。
注意:
如果你所取的参数并不存在,则会返回你undefine.
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- 详解HDFS Short Circuit Local Reads
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子