Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 更新引用时Vuex存储值正在更改_Vue.js_Vuex - Fatal编程技术网

Vue.js 更新引用时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 =

我正在使用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”值。 为什么会这样


这是因为它是一个对象引用吗?如果是这样的话,解决的方法是什么?

目前我已经解决了这个问题。我正在从存储区传递一个对象,因此正在更新该值。所以我稍微修改了一下代码

    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变量的信息[

我暂时解决了这个问题: