在原生和React Native间通信

2190 查看

你可以直接看这里:
http://reactnative.cn/docs/communication-ios.html#content


1.在原生和React Native间通信.jpg

技术发展的成熟有一个重要的标志:组件或者说库是不是已经足够多。
如果我们写一个APP的第一版的时候,有90%的工作可以通过第三方库来完成,我们可以认为这个技术已经发展得足够成熟。
而我们从事这份技术工作的时候,有会很多工作从开发变成调包。调包侠也。
然后,节省下来的时间,我们可以更好地打理生活,或者继续深入打造更多更多的“包”出来,给自己,也给别人,也给世界,也给宇宙使用。
RN,有JS端,有原生端。相应的,包,有JS,也有原生。
于是我们要解决两端之间的通信。


2.原生组件调React Native- 传递属性.jpg

原生给JS传数据,主要依靠属性。
通过initialProperties,这个RCTRootView的初始化函数的参数来完成。
RCTRootView还有一个appProperties属性,修改这个属性,JS端会调用相应的渲染方法。


3.原生组件调React Native- 更新属性.jpg

更新属性的时候,有讲究。
更新要放在主线程来做。读取就无所谓了。
原生做RN的属性更新时,需要提供完整的属性表里的所有属性。
componentWillReceiveProps和componentWillUpdateProps不会被触发。
通过componentWillMount来访问新的属性值。


4.React Native调原生方法- 属性.jpg

RN调原生时,也可以用属性。
但因为跨语言属性不支持回调,所以并不建议使用。


5.React Native调原生方法- 事件.jpg

最常用的RN调原生,有事件。
事件实际上用来会有很多问题。
主要靠bridge来完成事件的发送。


6.React Native调原生方法- 原生模块.jpg

原生模块,则好用很多。
可以导出任意的函数和常量给RN.
要注意的是,原生模块因为使用的是单例模式,所以会对嵌入造成一定的限制。
在原生模块机制时,有父视图标识。这个标训需要维护。
原生模块最大的便利在于,你可以重用现有的原生库。


7.布局计算流- React Native嵌入原生.jpg

通过导入原生模块的Costants,然后使用定制style就可定制布局。


8.布局计算流- 原生嵌入React Native.jpg

可以直接改frame。
RN内的布局当然最好使用flexbox布局。
绝对定位时,要注意视图重叠的问题。

免费知识,收费聊天。
不卖时间,只卖方向。


9.5元群.jpg