我使用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 = endDate
compareEnd.setDate(endDate.getDate() + 7)
执行setDate函数时,商店值更改为' compareEnd'值。 为什么会这样?
这是因为它是一个对象引用吗?如果是这样的话,那是什么工作?
答案 0 :(得分:0)
暂时我解决了这个问题。我正在从商店传递一个对象,因此正在更新该值。所以我稍微更改了代码。
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)
我不确定这是不是最好的方式。
答案 1 :(得分:-1)
好问题!这是经典的Java案例,即按引用传递和按值传递。
在您的情况下,startDate / endDate成为this。$ store.getters.getDateRange.start / end的引用,因此,每当您更新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())
在[https://hackernoon.com/javascript-reference-and-copy-variables-b0103074fdf0]
处了解有关JS变量的更多信息