# template
<uni-calendar
:insert="true"
:start-date="'2020-01-01'"
:end-date="'2029-12-31'"
@change="handleDateChange"
@monthSwitch="handleMonthSwitch"
:selected="calendarInfo"
/>
# script
const calendarInfo = reactive([
{
date: '2022-10-01',
info: '¥100'
},
{
date: '2022-10-02',
info: '¥60'
}
])
calendarInfo.push({
date: '2022-10-03',
info: '¥50'
})
calendarInfo.push 执行后视图层不会更新,依然只显示 2022-10-01 和 2022-10-02 的信息。
原因: uni-calendar组件中未对selected进行深层监听。
#uni-calendar.vue
watch: {
selected(newVal) {
this.cale.setSelectInfo(this.nowDate.fullDate, newVal)
this.weeks = this.cale.weeks
}
......
}
解决方法: 启用深层监听。
#uni-calendar.vue
watch: {
selected: {
handler(newVal) {
this.cale.setSelectInfo(this.nowDate.fullDate, newVal)
this.weeks = this.cale.weeks
},
deep: true
}
......
}