美文网首页RN
RN与iOS原生通信

RN与iOS原生通信

作者: 碧玉小瑕 | 来源:发表于2019-08-14 17:25 被阅读0次

    简介

    在 React 中信息是单向传递的,每个组件都仅依赖于它父组件和自己的状态。通过属性(props)我们将信息从上而下的从父组件传递到子元素。如果一个祖先组件需要自己子孙的状态,推荐的方法是传递一个回调函数给对应的子元素。

    React Native 也运用了相同的概念。在框架内构建应用,就可以通过属性和回调函数来调动整个应用。

    但是,当混合 React Native 和原生组件时,我们需要一些特殊的,跨语言的机制来传递信息。

    属性

    可以通过一个方法从原生组件传递属性到 React Native 或者从 React Native 到原生组件。

    从原生组件传递属性到 React Native

    1.RCTRootView是一个UIView容器,承载着 React Native 应用,同时它也提供了一个联通原生端和被托管端的接口。

    初始化函数传入三个参数,第一个参数bridge负责RN和Native通信,第二个为应用在RN中的app名字,'ImageBrowserApp'对应AppRegistry.registerComponent('ImageBrowserApp', () => ImageBrowserApp);中的第一个参数,第三个参数props即为从原生页面传入的属性。

    通过RCTRootView的初始化函数可以将任意属性传递给 React Native 应用。参数initialProperties必须是NSDictionary的一个实例,这一字典参数会在内部被转化为一个可供 JS 组件调用的 JSON 对象。

    RCTRootView同样提供了一个可读写的属性appProperties,在appProperties设置之后,React Native 应用将会根据新的属性重新渲染,而且只有在新属性和之前的属性有区别时更新才会被触发。

    更新必须在主线程中进行,读取则可以在任何线程中进行。

    相关文章

      网友评论

        本文标题:RN与iOS原生通信

        本文链接:https://www.haomeiwen.com/subject/yefgjctx.html