不知不觉从今年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发布后出现不兼容问题的时候跳出来发布新版原本更好的兼容。
也会收集你们的反馈来完善控件。
感谢你们的支持和喜欢💗!函数