Vue.js 更新引用时Vuex存储值正在更改
我正在使用getter将存储值设置为变量,当我稍后更改变量值时,vuex存储值正在更新 下面是我的代码Vue.js 更新引用时Vuex存储值正在更改,vue.js,vuex,Vue.js,Vuex,我正在使用getter将存储值设置为变量,当我稍后更改变量值时,vuex存储值正在更新 下面是我的代码 let startdate = this.$store.getters.getDateRange.start let endDate = this.$store.getters.getDateRange.end let compareStart = startdate compareStart.setDate(startdate.getDate() - 7) let compareEnd =
let startdate = this.$store.getters.getDateRange.start
let endDate = this.$store.getters.getDateRange.end
let compareStart = startdate
compareStart.setDate(startdate.getDate() - 7)
let compareEnd = endDate
compareEnd.setDate(endDate.getDate() + 7)
执行setDate函数时,存储值更改为“compareEnd”值。
为什么会这样
这是因为它是一个对象引用吗?如果是这样的话,解决的方法是什么?目前我已经解决了这个问题。我正在从存储区传递一个对象,因此正在更新该值。所以我稍微修改了一下代码
let startdate = this.$store.getters.getDateRange.start
let endDate = this.$store.getters.getDateRange.end
let compareStart = new Date(startdate.getUTCFullYear(), startdate.getUTCMonth(), startdate.getUTCDate())
compareStart.setDate(startdate.getDate() - 7)
let compareEnd = new Date(endDate.getUTCFullYear(), endDate.getUTCMonth(), endDate.getUTCDate())
compareEnd.setDate(endDate.getDate() + 7)
我不确定这是不是最好的方法。好问题!这是传递引用和传递值的经典Javascript案例 在您的情况下,startDate/endDate将成为此.store.getters.getDateRange.start/end的引用,因此每当您更新startDate/endDate时,它都会更改存储中的startDate/endDate 在我看来,您的存储变量是JS日期对象。尝试以下方法
//Let's Breakdown References
let startdate = new Date(this.$store.getters.getDateRange.start.valueOf())
let endDate = new Date(this.$store.getters.getDateRange.end.valueOf())
在这里了解更多关于JS变量的信息[我暂时解决了这个问题: