美文网首页
RN与JS交互之-封装iOS原生UI组件

RN与JS交互之-封装iOS原生UI组件

作者: lzh_coder | 来源:发表于2017-11-20 11:58 被阅读257次

原生UI导出到JS端来使用,本质上还是一个模块。以iOS为例,RN版本0.44.3。

1,原生UI组件,要么是自定义,要么是继承已有原生UI组件。

2,每一个需要导出到JS的原生组件都需要一个RCTViewManager子类,类名规则:UI组件的名字+Manager。

    2.1 继承RCTViewManager

    2.2 导出原生View。

        重写-(UIView*)view{ xxx },返回要导出的原生UI组件的实例。

    2.2 导出模块

        RCT_EXPORT_MODULE()

    2.3 导出属性给JS.

        eg. RCT_EXPORT_VIEW_PROPERTY(onClick, RCTDirectEventBlock);

3,JS端封装

为了尽量屏蔽JS端调用的不同,要将Native导出的UI组件,在JS端再封装一层。然后在导出,对外让调用者感觉不到这是一个原生组件。

需要注意一下几点:

1,在JS端渲染出来的UI组件,本质上就是一个原生UI组件,因此,组件的对用户操作的响应,首先是反映在原生逻辑里面的。

2,毕竟原生组件是JS页面的一部分,用户操作可能会带来非原生组件的更新,这个时候通过RCTDirectEventBlock或者RCTBubblingEventBlock,在原生侧定义回调事件,需要注意的是,回调事件必须以on开头,否则JS端无法响应。

相关文章

网友评论

      本文标题:RN与JS交互之-封装iOS原生UI组件

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