不知不覺從今年9月發佈初版控件到如今已經快3個月了
過去不斷從開源社區索取,一直一直想着有機會必定要回報💪
因而在項目閒暇之時,將本身在項目中設計使用的控件提取出,加以來完善上傳到了Github併發布到npm
短短3個月,收穫了國內外友人的很多的⭐️和Feedback,真誠的很是感謝你們的支持也感激各位不吝提出Issues和Pull requests
三個月我一共發了9個版本,如今控件已經升級到v0.4.0,期間只是更新了Github上英文的readme,一直沒有再更新中文說明,這裏就用一篇總結方式的短篇,把一些新的變化總結一下吧,同時也能讓你們瞭解一些設計思路和想法react
https://github.com/sohobloo/react-native-modal-dropdowngit
先從刪掉的內容講起吧:從v0.3.0開始,我將updatePosition
屬性標記爲不推薦,並已經實際將其中的代碼所有移除。從v0.3.1開始完全刪除了這個方法。不過出了點小小意外,刪除了方法體卻沒有把構造函數中的bind
語句一併刪除,因此緊急發佈了v0.3.2修復這個Bug🤗
這個方法在當初設計的做用是由於在某些狀況下使用控件,好比在ScrollView
中,下拉框的相對位置可能會不斷改變,所以但願發生這種狀況的時機使用者能手動調用一下以便下拉框下次彈出時的位置能獲得正確計算。在當初我在項目中使用的控件就用的這個辦法。
但我一直以爲這樣不妥,我偏向於讓使用者更輕鬆,因而在評估了性能以後,從v0.3.0我加上了顯示下拉框前自動計算更新位置的功能!耶🍻!github
由於之前沒有發佈過,在準備和實現v0.1.0的過程當中,我須要學習其餘控件的package文件,以便發佈到npm。固然是去看比較類似的控件,因此我從這些控件獲得一些很不錯的想法。因而,因而乎,因而呢v0.2.0版本我就加上了把控件做爲容器使用的功能。逮誰誰懷孕變成下拉框按鈕的夢想終於實現了😭:npm
renderSeparator
接口,讓你能自定義下拉框中的分割線renderRow
中可使用本身的TouchableXxxx
組件。由於有小夥伴表示我想修改觸摸時的背景色,也有小夥伴表示我想改爲觸摸時半透明。因而我就想,若是你們想用不一樣的Touchable
組件,就讓使用者本身決定吧!固然若是你一如既往的就喜歡個人樣式,我也會始終如一的默認使用TouchableOpacity
來爲你生成每一行選項噠!並且新版本還修復了由於錯誤的背景色致使選項被選中時醜陋的黑色高亮(上面那個Gif中就是反面例子😳)。撒花🌹!收到的第一個Pull Request來至一位帥氣活躍的國外友人@NikolaBorislavovHristov,去除了使用Object類型做爲style時的⚠️,跟隨v0.4.0一同發佈
最後就是針React Native的v0.36.0的一個重大變動作了兼容,這一項也跟隨v0.4.0一同發佈。因此若是您的React-Native版本若是太低的話,使用最新v0.4.0版本的時候可能會出現flexGrow
樣式找不到的問題,這同樣式應該是React-Native的v0.34.1版本以後纔有的哦。react-native
在某些狀況下,對於下拉框的位置計算仍然存在不精確的狀況,但問題發生的狀況和環境很難預估。因此在出現了這種情況時,小夥伴們只能用v0.4.0提供的一個work around方法來從新給出本身計算的位置了。
v0.4.0提供了一個名爲adjustFrame
的Property
,這個方法會在dropdown須要顯示前返回給你一個對象,對象中包含如下幾種屬性的一個子集:width
height
top
left
right
,你能夠根據實際狀況修改這些屬性的值,並將這個對象做爲該函數的返回值返回給我便可調整下拉框的位置和高寬。併發
我想後續我會在對RN的版本兼容上作一些工做,而且在新版RN發佈後出現不兼容問題的時候跳出來發佈新版原本更好的兼容。
也會收集你們的反饋來完善控件。
感謝你們的支持和喜歡💗!函數