vue 多个计算属性依赖一个值,会导致该值被改变?

问题是这样的:模板中用了iview的日期选择器这个组件,绑定了searchTime这个值,然后写了两个计算属性,里面分别都用到了searchTime,但是打印里面的数据的时候,发现xlist这个searchTime是正常的,但是在dataObj这个计算属性中,searchTime已经被改变了,也就是说,看起来是xlist中是直接作用于searchTime,写的startTime并没有一个拷贝的感觉,导致xlist操作一遍之后searchTime的值已经发生改变,dataObj无法正常使用。不是很理解为什么会这样,有没有大神可以解释下

<template>

 <DatePicker v-model="searchTime" @on-change="searchTimeChange($event)" :options="disableDate" type="daterange" placement="bottom-start" placeholder="选择日期" style="width: 200px"></DatePicker>

</template>
<script>

data:{
    searchTime
}
computed: {
    xList () {
    var list = []
    let startTime = this.searchTime[0]
    let endTime = this.searchTime[1]
    while ((endTime.getTime() - startTime.getTime()) >= 0) {
      let month = (startTime.getMonth() + 1).toString()
      let day = startTime.getDate().toString()
      list.push(`${month}月${day}日`)
      startTime.setDate(startTime.getDate() + 1)
      console.log('xList', endTime, startTime)
    }
    return list
  },
  dataObj () {
    let startTime = this.searchTime[0]
    let endTime = this.searchTime[1]
    console.log(this.searchTime, startTime, endTime)
  }
}

</script>

clipboard.png

阅读 2.8k
1 个回答

new Date()是个对象
startTime.setDate(startTime.getDate() + 1)这一步操作会修改掉this.searchTime[0]的值。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题