最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ios原生和react-native各種交互的示例代碼

 更新時間:2017年08月22日 09:40:28   作者:請叫我啊亮  
本篇文章主要介紹了ios原生和react-native各種交互的示例代碼,非常具有實用價值,需要的朋友可以參考下

需求:讓一個表格視圖中的cell能左滑刪除,效果圖如下:


目前RN中的ListView主要問題是復用,以及其他一些細節(jié)如索引視圖、左滑刪除、編輯等,要想在RN上自定義實現(xiàn)原生的這種效果尚有一定的問題,在必要時可以考慮使用原生的UITableView,數(shù)據(jù)從RN端傳遞

1、原生端編寫表格控制器NativeTableViewController,暴露的屬性如下


datas為表格數(shù)據(jù)源,另外一個為需要暴露給RN調(diào)用用方法。

2、框架只提供了暴露UIView給RN端的接口,所以需要制作一個中轉(zhuǎn)UIView視圖,該UIView的.h文件跟控制器的完全一致,.m實現(xiàn)如下


視圖初始化的時候創(chuàng)建控制器,并將控制器的view添加為子視圖,顯示的時候就是控制器的視圖了。setDatas和changeBackgroundColor方法僅僅只是個鏈接作用,實際是調(diào)用的控制器的方法

3、要想將UIView視圖暴露給RN,需要使用RCTViewManager的子類。RCTViewManager為框架提供的原生端視圖管理類,已經(jīng)實現(xiàn)了RCTBridgeModule接口,會自動將相應(yīng)的UIView注冊到橋接文件中。子類需要實現(xiàn)兩個方法


.h文件


.m文件


.m文件

宏RCT_EXPORT_VIEW_PROPERTY是將該管理類管理的那個視圖,也就是方法-(UIView *)view返回的那個視圖的屬性暴露出去,js端設(shè)置該屬性的時候會觸發(fā)屬性的setter方法,也就是NativeTableView中實現(xiàn)的- (void)setDatas:(NSArray *)datas,進而觸發(fā)控制器的setDatas方法,刷新表格

4、js端調(diào)用。如下封裝原生端暴露出去的視圖,需要注意的是默認情況下,requireNativeComponent方法的第一個參數(shù)不是原生端的類名


使用如下,必須要設(shè)置寬高才行


5、現(xiàn)在已經(jīng)完成了視圖的顯示,還缺少的是事件回調(diào)。這里有兩類事件,觸發(fā)條件不一:

a、js端事件驅(qū)動,舉例:js端調(diào)用原生表格控制器的changeBackgroundColor方法

b、原生端事件驅(qū)動,舉例:原生cell左滑,點擊刪除按鈕,觸發(fā)js端數(shù)據(jù)源數(shù)據(jù)改變,進而刷新頁面

a事件方案:

RCT_EXPORT_METHOD宏可以將原生端方法暴露給js端,js直接調(diào)用就可以了。那么在這個方法里面要如何才能拿到目標視圖NativeTableView,然后調(diào)用它的changeBackgroundColor方法呢?

很顯然的看到了我們重寫的父類方法- (UIView *)view,這里可以得到NativeTableView,但是每次調(diào)用都是返回一個新的視圖,那么可以將這個視圖緩沖起來,然后每次都返回同一個?理想很豐滿,現(xiàn)實很骨感,看官方的文檔


顯然這里不允許換成該視圖。至于原因我也不太清楚

看源碼發(fā)現(xiàn)每個注冊的視圖其實都是有編號tag的,只要知道原生端視圖注冊時生成的tag,就能從視圖管理類RCTUIManager中找到它,下面是最終實現(xiàn)代碼


js端調(diào)用如下:


findNodeHandle方法直接從react-native庫中導出,找到視圖的tag


b事件方案:

原生端事件通知js端,使用RCTEventEmitter。



原生事件觸發(fā)時調(diào)用如下:


控制器NativeTableViewController的代理方法實現(xiàn)

js端監(jiān)聽原生調(diào)用事件如下:



流程是:

1、js端注冊監(jiān)聽原生端通知

2、原生端表格代理方法觸發(fā)事件,調(diào)用RativeTOJSEventEmitter發(fā)出通知

3、js端監(jiān)聽到通知,觸發(fā)回調(diào),處理數(shù)據(jù),重新刷新視圖

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • React的Props、生命周期詳解

    React的Props、生命周期詳解

    “Props” 是 React 中用于傳遞數(shù)據(jù)給組件的一種機制,通常作為組件的參數(shù)進行傳遞,在 React 中,props 是只讀的,意味著一旦將數(shù)據(jù)傳遞給組件的 props,組件就不能直接修改這些 props 的值,這篇文章主要介紹了React的Props、生命周期,需要的朋友可以參考下
    2024-06-06
  • React自定義Hook的實現(xiàn)

    React自定義Hook的實現(xiàn)

    自定義Hook是一種自定義函數(shù),它封裝了React Hook的邏輯,并通過命名約定來使其可重用,本文主要介紹了React自定義Hook的實現(xiàn),感興趣的可以了解一下
    2023-11-11
  • React如何避免子組件無效刷新

    React如何避免子組件無效刷新

    這篇文章主要介紹了React幾種避免子組件無效刷新的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 詳解在React.js中使用PureComponent的重要性和使用方式

    詳解在React.js中使用PureComponent的重要性和使用方式

    這篇文章主要介紹了詳解在React.js中使用PureComponent的重要性和使用方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • React獲取input值并提交的2種方法實例

    React獲取input值并提交的2種方法實例

    這篇文章主要給大家介紹了關(guān)于React獲取input值并提交的2種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • React使用高階組件與Hooks實現(xiàn)權(quán)限攔截教程詳細分析

    React使用高階組件與Hooks實現(xiàn)權(quán)限攔截教程詳細分析

    高階組件就是接受一個組件作為參數(shù)并返回一個新組件(功能增強的組件)的函數(shù)。這里需要注意高階組件是一個函數(shù),并不是組件,這一點一定要注意,本文給大家分享React高階組件使用小結(jié),一起看看吧
    2023-01-01
  • 詳解react setState

    詳解react setState

    這篇文章主要介紹了react setState的相關(guān)資料,幫助大家更好的理解和學習使用react,感興趣的朋友可以了解下
    2021-04-04
  • 淺談React Component生命周期函數(shù)

    淺談React Component生命周期函數(shù)

    React組件有哪些生命周期函數(shù)?類組件才有的生命周期函數(shù),分為幾個階段:掛載,更新,卸載,錯誤處理,本文主要介紹了這個階段,感興趣的可以了解一下
    2021-06-06
  • 詳解對于React結(jié)合Antd的Form組件實現(xiàn)登錄功能

    詳解對于React結(jié)合Antd的Form組件實現(xiàn)登錄功能

    這篇文章主要介紹了詳解對于React結(jié)合Antd的Form組件實現(xiàn)登錄功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • 關(guān)于React狀態(tài)管理的三個規(guī)則總結(jié)

    關(guān)于React狀態(tài)管理的三個規(guī)則總結(jié)

    隨著 JavaScript 單頁應(yīng)用開發(fā)日趨復雜,JavaScript 需要管理比任何時候都要多的 state (狀態(tài)),這篇文章主要給大家介紹了關(guān)于React狀態(tài)管理的三個規(guī)則,需要的朋友可以參考下
    2021-07-07

最新評論

青河县| 保德县| 明星| 汕尾市| 印江| 轮台县| 绿春县| 忻城县| 双桥区| 白沙| 克什克腾旗| 华池县| 自治县| 宾阳县| 南溪县| 宣威市| 喜德县| 峨眉山市| 茌平县| 藁城市| 廉江市| 新田县| 建平县| 邹城市| 宁国市| 旬邑县| 巫山县| 泊头市| 阿克苏市| 安远县| 加查县| 红安县| 布尔津县| 福鼎市| 永定县| 兴业县| 萝北县| 巩留县| 安图县| 界首市| 策勒县|