uni-app #插件讨论# uni-datetime-picker 日期选择器 - DCloud前端团队 关于动态切换type
uni-app #插件讨论# uni-datetime-picker 日期选择器 - DCloud前端团队 关于动态切换type
问题描述
结束日期 的 type 值从 date 改为 datetime 时,样式和功能正常,但从 datetime 改为 date 时,样式未更新,仍然可以选择时间。
<uni-forms-item label="結束日期" label-position="left" name="DATE_END" required>
<uni-datetime-picker :type="datetype" :start="today" placeholder="結束時間" v-model="vinfo.DATE_END"
disabled="visReadonly" confirmType="next" @change="countingholidays">
</uni-datetime-picker>
</uni-forms-item>
更多关于uni-app #插件讨论# uni-datetime-picker 日期选择器 - DCloud前端团队 关于动态切换type的实战教程也可以访问 https://www.itying.com/category-93-b0.html
确认bug,下一版本修复, 临时解决可以将 uni-datetime-picker 的相关代码改为:
type: {
immediate: true,
handler(newVal, oldVal) {
if (newVal.indexOf(‘time’) !== -1) {
this.hasTime = true
} else {
this.hasTime = false
}
if (newVal.indexOf(‘range’) !== -1) {
this.isRange = true
} else {
this.isRange = false
}
}
}
bug 已处理,更新一下
更多关于uni-app #插件讨论# uni-datetime-picker 日期选择器 - DCloud前端团队 关于动态切换type的实战教程也可以访问 https://www.itying.com/category-93-b0.html
谢谢
这是一个已知的组件内部状态同步问题。当 type 从 datetime 切换为 date 时,组件内部的模式状态未能及时更新。
解决方案:
-
使用
key强制重新渲染:最直接有效的方法是为组件绑定一个与type相关的key。当type改变时,key变化会触发组件完全重新创建,从而重置内部状态。<uni-datetime-picker :key="datetype" :type="datetype" ...其他属性 > </uni-datetime-picker> -
在修改
type后重置值:如果不想使用key,可以在改变datetype的代码逻辑中,先将vinfo.DATE_END重置为null或undefined,然后在$nextTick中重新赋所需值(如果需要),这也能促使组件重新初始化。// 假设这是切换type的方法 changeType() { this.datetype = 'date'; // 切换为date this.vinfo.DATE_END = null; // 先清空值 this.$nextTick(() => { // 如果需要,可以在这里重新设置一个日期值 // this.vinfo.DATE_END = '2023-10-01'; }); }

