react-native-slidepickerreact
一個純 JavaScript 實現的的 React Native 組件,用於如地址,時間等分類數據選擇的場景。git
github: https://github.com/lexguy/react-native-slidepickergithub
三輪選擇,選擇級聯地址數據:npm
(可自定義條目高,選中和非選中條目的背景色,字體顏色和大小)react-native
當前使用的 react-native-picker 組件,雖然並無什麼功能上的硬傷,可是在樣式可調性上稍差,並且鑑於該庫的更新都是幾年前了,issue 清理速度慢,因此仍是須要備好替代方案。數組
具體的實現方案,首先考慮到的方案就是ScrollView滑動,而後在滑動離開的時候再定位到鄰近的選擇Item上面。ide
在使用ScrollView
做單個選擇的滑動效果時,發如今上面添加了透明背景色以後,ScrollView
獲取不到滑動事件,上層的View
攔截掉手勢效果,手動設置不處理手勢,ScrollView
依然不能滑動。函數
那就只能換一種方式了,那就換手勢實現。字體
選擇列表根據手勢的滑動作總體transform
,根據手勢上下偏移,手勢釋放的時候定位到最近的根據Item
高度取整的位置。調試
在每次手勢中止的時候計算所處的位置,獲得在數值列表中的索引,再經過props
回調函數傳回結果。若是是級聯列表,須要重置下一選擇輪的數據到初始值。
級聯列表的數據是對象和數組格式的反覆嵌套,能夠經過遞歸的方式去讀取,而後在組件內部轉換爲扁平的平級數據後生成多個滑動區域和對應的列表數據。
通過調試,終於獲得結果,已經放在 Github 上 react-native-slidepicker (包含使用詳情和源碼)
也上傳到 npm 庫,能夠直接安裝:
npm install react-native-slidepicker react-native-gesture-handler -S
使用參考 github 地址。