很多项目中的选择器用的全部是Dcloud插件市场的 w-picker组件,这个组件功能非常的强大能满足大部分选择器的使用场景。
最近发现了一个bug,微信小程序w-picker下拉选择数据时,偶然出现选中的数据依然是上次的老数据而不是最新的数据
经过深入研究发现bug出现原因:
picker-view
组件的 @change
事件仅在用户完成滑动操作后触发。
当系统出现异常情况时,通常是由于用户滑动操作过于迅速,并在滑动尚未结束时点击了右上角的”确认按钮“。
在此情形下,由于 @change
事件未被触发,系统无法获取滑动后更新的值,因此实际获取到的仍然是滑动前的原始值。
解决方案:
在picker-view
上增加属性: immediate-change="true"
immediate-change:是否在手指松开时立即触发 change 事件。若不开启则会在滚动动画结束后触发 change 事件。

注意事项:
也就是说 uniapp的picker-view
组件在小程序上都会存在这种问题,根据我们的实际业务场景来使用immediate-change
属性,请查看picker-view组件详细介绍