前言
不知不覺從今年9月發(fā)布第一版控件到現(xiàn)在已經(jīng)快3個月了
過去不斷從開源社區(qū)索取诉濒,一直一直想著有機會一定要回報??
于是在項目閑暇之時缅阳,將自己在項目中設(shè)計使用的控件提取出悬嗓,加以來完善上傳到了Github并發(fā)布到npm
短短3個月顾稀,收獲了國內(nèi)外友人的不少的??和Feedback博肋,真誠的非常感謝大家的支持也感激各位不吝提出Issues和Pull requests
三個月我一共發(fā)了9個版本,現(xiàn)在控件已經(jīng)升級到v0.4.0赃春,期間只是更新了Github上英文的readme愉择,一直沒有再更新中文說明,這里就用一篇總結(jié)方式的短篇织中,把一些新的變化總結(jié)一下吧锥涕,同時也能讓大家了解一些設(shè)計思路和想法
項目地址
https://github.com/sohobloo/react-native-modal-dropdown
更新總結(jié)
-
更智能易用啦
先從刪掉的內(nèi)容講起吧:從v0.3.0開始,我將updatePosition
屬性標(biāo)記為不推薦狭吼,并已經(jīng)實際將其中的代碼全部移除层坠。從v0.3.1開始徹底刪除了這個方法。不過出了點小小意外刁笙,刪除了方法體卻沒有把構(gòu)造函數(shù)中的bind
語句一并刪除破花,所以緊急發(fā)布了v0.3.2修復(fù)這個Bug??
這個方法在當(dāng)初設(shè)計的作用是因為在某些情況下使用控件,比如在ScrollView
中疲吸,下拉框的相對位置可能會不斷改變旧乞,因此希望發(fā)生這種情況的時機使用者能手動調(diào)用一下以便下拉框下次彈出時的位置能得到正確計算。在當(dāng)初我在項目中使用的控件就用的這個辦法磅氨。
但我一直覺得這樣不妥,我偏向于讓使用者更輕松作喘,于是在評估了性能之后废境,從v0.3.0我加上了顯示下拉框前自動計算更新位置的功能沫勿!耶??!
-
功能更強大啦
因為以前沒有發(fā)布過叉橱,在準(zhǔn)備和實現(xiàn)v0.1.0的過程中,我需要學(xué)習(xí)其他控件的package文件者蠕,以便發(fā)布到npm窃祝。當(dāng)然是去看比較相似的控件,所以我從這些控件得到一些很不錯的想法踱侣。于是粪小,于是乎,于是呢v0.2.0版本我就加上了把控件作為容器使用的功能抡句。逮誰誰懷孕變成下拉框按鈕的夢想終于實現(xiàn)了??:
![懷出一朵小紅??](https://github.com/sohobloo/react-native-modal-dropdown/raw/master/docs/demo_4.gif?raw=true)
-
定制化更豐富了
隨著使用人數(shù)變多探膊,大家的定制化需求也會慢慢浮現(xiàn),所以在最新的v0.4.0版本中待榔,你能做到更多:
- 開放了
renderSeparator
接口逞壁,讓你能自定義下拉框中的分割線 - 強勢推出在
renderRow
中可以使用自己的TouchableXxxx
組件流济。因為有小伙伴表示我想修改觸摸時的背景色,也有小伙伴表示我想改成觸摸時半透明腌闯。于是我就想绳瘟,如果大家想用不同的Touchable
組件,就讓使用者自己決定吧姿骏!當(dāng)然如果你一如既往的就喜歡我的樣式糖声,我也會始終如一的默認(rèn)使用TouchableOpacity
來為你生成每一行選項噠!而且新版本還修復(fù)了因為錯誤的背景色導(dǎo)致選項被選中時丑陋的黑色高亮(上面那個Gif中就是反面例子??)工腋。撒花??姨丈! - 在v0.3.0之后的兩個小版本修復(fù)了一些Bug,讓大家可以正確的在自定義的style中設(shè)置下拉框的高度和寬度了擅腰。非常感謝發(fā)現(xiàn)問題的@cgwu童鞋蟋恬,你發(fā)現(xiàn)了第一個,我順藤摸瓜把另一個也修復(fù)啦~
-
兼容性更佳了
收到的第一個Pull Request來至一位帥氣活躍的國外友人@NikolaBorislavovHristov趁冈,去除了使用Object類型作為style時的??歼争,跟隨v0.4.0一同發(fā)布
最后就是針React Native的v0.36.0的一個重大變更做了兼容,這一項也跟隨v0.4.0一同發(fā)布渗勘。所以如果您的React-Native版本如果過低的話沐绒,使用最新v0.4.0版本的時候可能會出現(xiàn)flexGrow
樣式找不到的問題,這一樣式應(yīng)該是React-Native的v0.34.1版本之后才有的哦旺坠。
-
仍有不足
在某些情況下乔遮,對于下拉框的位置計算仍然存在不精確的情況,但問題發(fā)生的情況和環(huán)境很難預(yù)估取刃。所以在出現(xiàn)了這種狀況時蹋肮,小伙伴們只能用v0.4.0提供的一個work around方法來重新給出自己計算的位置了。
v0.4.0提供了一個名為adjustFrame
的Property
璧疗,這個方法會在dropdown需要顯示前返回給你一個對象坯辩,對象中包含以下幾種屬性的一個子集:width
height
top
left
right
,你可以根據(jù)實際情況修改這些屬性的值崩侠,并將這個對象作為該函數(shù)的返回值返回給我即可調(diào)整下拉框的位置和高寬漆魔。
后續(xù)
我想后續(xù)我會在對RN的版本兼容上做一些工作,并且在新版RN發(fā)布后出現(xiàn)不兼容問題的時候跳出來發(fā)布新版本來更好的兼容却音。
也會收集大家的反饋來完善控件改抡。
感謝大家的支持和喜歡??!