uview中Picker选择器 点击页面数据延迟问题

在uniapp开发中,很多用户都使用到了uview这个组件,当然开发小程序之类的,我们经常会使用到Picker 选择器,用的过程中很容易发现这个组件有一个坑就是,点击页面的时候,数据会延迟,

刚开始我还是以为是数据层级过深导致页面不刷新,使用了this.$forceUpdate()之后,发现还是不行,结果我发现只需要在Picker组件上加上一个属性就好了

解决方法:

加上 :immediateChange ="true"就可以了,这样就可以实时监听到数据的变化

<!-- 弹出框 -->
	<u-picker 
        :show="isShowPopup" 
        :columns="columns" 
        @confirm="confirmPopup" 
        @cancel="closePopup" 
        keyName="address" 
        immediateChange>
    </u-picker>

希望能帮助到你!

uView Plus Picker 选择器组件可以用于在多个选项选择一个或多个选项。Picker 支持多种选择模式,如单列模式、多列模式、时间选择器等。以下是 Picker 组件的基本用法: 1. 单列模式 ```html <uni-picker mode="selector" :range="{{['选项1','选项2','选项3']}}" @confirm="onPickerConfirm"> <view>请选择</view> </uni-picker> ``` 在单列模式,我们通过设置 mode 属性为"selector"来指定选择器的模式。通过设置 range 属性来指定选项列表。在用户选择完选项并点击确定按钮后,会触发 confirm 事件,我们可以在事件处理函数获取选的值。示例代码的 onPickerConfirm 函数如下: ```javascript onPickerConfirm(event) { console.log(event.detail.value) // 打印选的值 } ``` 2. 多列模式 ```html <uni-picker mode="multiSelector" :range="{{multiRange}}" @confirm="onPickerConfirm"> <view>请选择</view> </uni-picker> ``` 在多列模式,我们通过设置 mode 属性为"multiSelector"来指定选择器的模式。通过设置 range 属性来指定多列选项列表。我们需要将每列选项列表保存在一个数组,然后将这些数组组成一个数组,作为 range 属性的值。在用户选择完选项并点击确定按钮后,会触发 confirm 事件,我们可以在事件处理函数获取选的值。此外,我们还需要在 data 定义一个 multiIndex 变量来保存每列选的索引值。示例代码如下: ```html <template> <view> <uni-picker mode="multiSelector" :range="{{multiRange}}" @confirm="onPickerConfirm" :value="{{multiIndex}}" @change="onMultiPickerChange"> <view>请选择</view> </uni-picker> </view> </template> <script> export default { data() { return { multiRange: [ ['选项1', '选项2', '选项3'], ['选项A', '选项B', '选项C'] ], multiIndex: [0, 0] } }, onPickerConfirm(event) { console.log(event.detail.value) // 打印选的值 }, onMultiPickerChange(event) { this.multiIndex = event.detail.value // 更新选的索引值 } } </script> ``` 在上述示例代码,我们定义了一个包含两列选项的多列模式的 Picker 组件。通过设置 multiRange 属性来指定每列选项列表。通过设置 value 属性来指定每列选的索引值。在用户选择完选项并点击确定按钮后,会触发 confirm 事件,我们可以在事件处理函数获取选的值。同时,我们还绑定了 change 事件,当用户选择了某一列的选项时,就会触发该事件,我们在事件处理函数更新 multiIndex 变量的值,以便正确显示选的选项。 3. 时间选择器 ```html <uni-picker mode="time" @confirm="onPickerConfirm"> <view>请选择时间</view> </uni-picker> ``` 在时间选择器,我们通过设置 mode 属性为"time"来指定选择器的模式。在用户选择完时间并点击确定按钮后,会触发 confirm 事件,我们可以在事件处理函数获取选的时间值。示例代码的 onPickerConfirm 函数如下: ```javascript onPickerConfirm(event) { console.log(event.detail.value) // 打印选的时间值 } ``` 在以上示例代码,我们都绑定了 confirm 事件,然后在事件处理函数获取选的值。我们可以根据实际需求来选择合适的模式和设置选项,以满足我们的业务需求。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值