更新参考时Vuex Store值正在变化

时间:2018-03-21 06:24:07

标签: 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 = endDate
compareEnd.setDate(endDate.getDate() + 7)

执行setDate函数时,商店值更改为' compareEnd'值。 为什么会这样?

这是因为它是一个对象引用吗?如果是这样的话,那是什么工作?

2 个答案:

答案 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变量的更多信息