简介
在 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 应用将会根据新的属性重新渲染,而且只有在新属性和之前的属性有区别时更新才会被触发。
更新必须在主线程中进行,读取则可以在任何线程中进行。
网友评论