ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Vue.js修改计算属性?

2019-11-11 11:37:06  阅读:640  来源: 互联网

标签:vuex vue-js vue-component vuejs2 javascript


我正在尝试修改驻留在vue.js计算属性中的moment.js实例,如下所示.

computed: {
    currentDate() {
        return moment();
    }
}

每当我尝试使用这种方法调用它时,都不会发生任何事情:

methods: {
    prevMonth() {
        this.currentDate = moment(this.currentDate).subtract(1, 'months');
    }
}

我猜这是因为计算属性仅允许充当getter(以及可选的setter).但是,如何更改此行为?

由于我使用cmoputed属性从vuex存储中获取数据,因此我简化了示例.我不再能够操纵它.

有什么方法可以用vuex存储的值填充本地currentDate属性,以便我仍然可以操纵它并添加月份等.

我虽然为此使用了mount属性,但是我只将组件安装一次.欢迎任何帮助.

解决方法:

如果您的currentDate属性属于Vuex存储,则不应在组件内部对其进行操作.您应该改为:1)将getter本地映射为计算属性,以及2)将突变本地映射为方法.

这是日期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单状态完成.

标签:vuex,vue-js,vue-component,vuejs2,javascript
来源: https://codeday.me/bug/20191111/2019525.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有