你可以直接看这里:
http://reactnative.cn/docs/communication-ios.html#content
技术发展的成熟有一个重要的标志:组件或者说库是不是已经足够多。
如果我们写一个APP的第一版的时候,有90%的工作可以通过第三方库来完成,我们可以认为这个技术已经发展得足够成熟。
而我们从事这份技术工作的时候,有会很多工作从开发变成调包。调包侠也。
然后,节省下来的时间,我们可以更好地打理生活,或者继续深入打造更多更多的“包”出来,给自己,也给别人,也给世界,也给宇宙使用。
RN,有JS端,有原生端。相应的,包,有JS,也有原生。
于是我们要解决两端之间的通信。
原生给JS传数据,主要依靠属性。
通过initialProperties,这个RCTRootView的初始化函数的参数来完成。
RCTRootView还有一个appProperties属性,修改这个属性,JS端会调用相应的渲染方法。
更新属性的时候,有讲究。
更新要放在主线程来做。读取就无所谓了。
原生做RN的属性更新时,需要提供完整的属性表里的所有属性。
componentWillReceiveProps和componentWillUpdateProps不会被触发。
通过componentWillMount来访问新的属性值。
RN调原生时,也可以用属性。
但因为跨语言属性不支持回调,所以并不建议使用。
最常用的RN调原生,有事件。
事件实际上用来会有很多问题。
主要靠bridge来完成事件的发送。
原生模块,则好用很多。
可以导出任意的函数和常量给RN.
要注意的是,原生模块因为使用的是单例模式,所以会对嵌入造成一定的限制。
在原生模块机制时,有父视图标识。这个标训需要维护。
原生模块最大的便利在于,你可以重用现有的原生库。
通过导入原生模块的Costants,然后使用定制style就可定制布局。
可以直接改frame。
RN内的布局当然最好使用flexbox布局。
绝对定位时,要注意视图重叠的问题。
免费知识,收费聊天。
不卖时间,只卖方向。
2024 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123