vue3使用uni-calendar组件,selected值改变时,视图不更新

625 阅读1分钟
# 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-012022-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
  }
  ......
}