前言
不知不覺從今年9月發布第一版控件到現在已經快3個月了
過去不斷從開源社區索取,一直一直想着有機會一定要回報💪
於是在項目閑暇之時,將自己在項目中設計使用的控件提取出,加以來完善上傳到了Github並發布到npm
短短3個月,收獲了國內外友人的不少的⭐️和Feedback,真誠的非常感謝大家的支持也感激各位不吝提出Issues和Pull requests
三個月我一共發了9個版本,現在控件已經升級到v0.4.0,期間只是更新了Github上英文的readme,一直沒有再更新中文說明,這里就用一篇總結方式的短篇,把一些新的變化總結一下吧,同時也能讓大家了解一些設計思路和想法
項目地址
https://github.com/sohobloo/react-native-modal-dropdown
更新總結
-
更智能易用啦
先從刪掉的內容講起吧:從v0.3.0開始,我將updatePosition
屬性標記為不推薦,並已經實際將其中的代碼全部移除。從v0.3.1開始徹底刪除了這個方法。不過出了點小小意外,刪除了方法體卻沒有把構造函數中的bind
語句一並刪除,所以緊急發布了v0.3.2修復這個Bug🤗
這個方法在當初設計的作用是因為在某些情況下使用控件,比如在ScrollView
中,下拉框的相對位置可能會不斷改變,因此希望發生這種情況的時機使用者能手動調用一下以便下拉框下次彈出時的位置能得到正確計算。在當初我在項目中使用的控件就用的這個辦法。
但我一直覺得這樣不妥,我偏向於讓使用者更輕松,於是在評估了性能之后,從v0.3.0我加上了顯示下拉框前自動計算更新位置的功能!耶🍻!
-
功能更強大啦
因為以前沒有發布過,在准備和實現v0.1.0的過程中,我需要學習其他控件的package文件,以便發布到npm。當然是去看比較相似的控件,所以我從這些控件得到一些很不錯的想法。於是,於是乎,於是呢v0.2.0版本我就加上了把控件作為容器使用的功能。逮誰誰懷孕變成下拉框按鈕的夢想終於實現了😭:
-
定制化更豐富了
隨着使用人數變多,大家的定制化需求也會慢慢浮現,所以在最新的v0.4.0版本中,你能做到更多:
- 開放了
renderSeparator
接口,讓你能自定義下拉框中的分割線 - 強勢推出在
renderRow
中可以使用自己的TouchableXxxx
組件。因為有小伙伴表示我想修改觸摸時的背景色,也有小伙伴表示我想改成觸摸時半透明。於是我就想,如果大家想用不同的Touchable
組件,就讓使用者自己決定吧!當然如果你一如既往的就喜歡我的樣式,我也會始終如一的默認使用TouchableOpacity
來為你生成每一行選項噠!而且新版本還修復了因為錯誤的背景色導致選項被選中時丑陋的黑色高亮(上面那個Gif中就是反面例子😳)。撒花🌹! - 在v0.3.0之后的兩個小版本修復了一些Bug,讓大家可以正確的在自定義的style中設置下拉框的高度和寬度了。非常感謝發現問題的@cgwu童鞋,你發現了第一個,我順藤摸瓜把另一個也修復啦~
-
兼容性更佳了
收到的第一個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版本之后才有的哦。
-
仍有不足
在某些情況下,對於下拉框的位置計算仍然存在不精確的情況,但問題發生的情況和環境很難預估。所以在出現了這種狀況時,小伙伴們只能用v0.4.0提供的一個work around方法來重新給出自己計算的位置了。
v0.4.0提供了一個名為adjustFrame
的Property
,這個方法會在dropdown需要顯示前返回給你一個對象,對象中包含以下幾種屬性的一個子集:width
height
top
left
right
,你可以根據實際情況修改這些屬性的值,並將這個對象作為該函數的返回值返回給我即可調整下拉框的位置和高寬。
后續
我想后續我會在對RN的版本兼容上做一些工作,並且在新版RN發布后出現不兼容問題的時候跳出來發布新版本來更好的兼容。
也會收集大家的反饋來完善控件。
感謝大家的支持和喜歡💗!