我正在尝试修改驻留在moment.js
计算属性中的vue.js
实例,如下所示。
computed: {
currentDate() {
return moment();
}
}
每当我尝试用这种方法调用它时,都不会发生任何事情:
methods: {
prevMonth() {
this.currentDate = moment(this.currentDate).subtract(1, 'months');
}
}
我猜这是因为计算属性只允许充当getter(和可选的setter)。但是,我如何改变这种行为呢?
我过度简化了这个示例,因为我使用cmoputed属性从我的vuex
存储中获取数据。不过,我已经不能再操纵它了。
有什么方法可以用currentDate
商店的值填充本地vuex
属性,这样我仍然可以操作它并添加月份等等吗?
我曾经想过要为此使用mounted
属性,但我只挂载了一次组件。欢迎任何帮助。
发布于 2017-05-09 05:45:18
如果您的currentDate
属性属于您的Vuex存储,则不应该在组件中操作它。相反,您应该: 1)将getter映射为计算属性,2)将变异映射为方法。
下面是您的date
Vuex模块的一个示例:
export default {
state: {
currentDate: moment()
},
mutations: {
subtractMonth (state, date) {
state.currentDate = moment(state.currentDate).subtract(1, 'months');
}
},
getters: {
getCurrentDate: (state) => {
return state.currentDate
}
}
}
这就是组件如何利用它,而不实际“在本地”执行任何操作:
import { mapGetters, mapMutations } from 'vuex'
export default {
computed: {
...mapGetters({
currentDate: 'getCurrentDate'
})
},
methods: {
...mapMutations({
prevMonth: 'subtractMonth'
})
}
}
您仍然可以将currentDate
绑定到组件中并像以前一样调用prevMonth
,但是现在一切都是通过Vuex单一状态完成的。
发布于 2017-05-09 02:49:50
计算的属性不是您可以调用的方法。如果您想拥有这样的方法,请将currentDate
移到方法中。您还可以从mounted
调用它。
https://stackoverflow.com/questions/43867369
复制