vue中data中某个属性依赖computed计算结果

想在computed中处理一些业务逻辑,但是ESlint提示不能在computed中给data中的变量重新赋值;
有更好的处理方式吗?除了放在watch里

    computed: {
        userData() {
            const userData = JSON.parse(JSON.stringify(this.data));
            let resultArr = [];

            Object.entries(userData).forEach(([key, value]) => {
                // eslint-disable-next-line
                userData[key].isFull = this.checkListItem(userData[key]);
                userData[key].showName = this.nameFormat(userData[key]);
                ...
                resultArr.push(userData[key]);
            });

            // 默认值排除不符合要求的
            _.forEach(resultArr, (item, index) => {
                _.forEach(this.defaultPerson, (it, id) => {
                    if (it === item.ads && !item.isFull) {
                        // eslint-disable-next-line
                        this.isSelected.splice(index, 1, false);
                        // eslint-disable-next-line
                        this.addPeopleArr.splice(index, 1, false);
                    }
                });
            });

            return resultArr;
        },
    },
阅读 6.8k
3 个回答

这个看你具体需求。假如说是你要在这个值变动下去改动其它属性的值,用watch是最好不过的,假如说你这个变动只用希望执行一次,可以考虑在mounted的时候处理
依旧目前你的需求来看,我的建议是放在watch 处理

新手上路,请多包涵

watch是监听一个值变化导致的事件变化,computed是监听多个值变化导致的结果,看你的业务场景了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题