Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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

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
Javascript Vue将对象作为计算属性展开_Javascript_Vue.js_Ecmascript 6_Vue Cli_Spread Syntax - Fatal编程技术网

Javascript Vue将对象作为计算属性展开

Javascript Vue将对象作为计算属性展开,javascript,vue.js,ecmascript-6,vue-cli,spread-syntax,Javascript,Vue.js,Ecmascript 6,Vue Cli,Spread Syntax,我的组件中有一个名为config的对象数组和一个currentIdx属性。然后我发现自己需要这样做: computed: { textStyle: function() { return this.config[this.currentIdx].textStyle; }, text: function() { return this.config[this.currentIdx].text; }, key: function

我的组件中有一个名为
config
的对象数组和一个
currentIdx
属性。然后我发现自己需要这样做:

computed: {
    textStyle: function() {
        return this.config[this.currentIdx].textStyle;
    },
    text: function() {
        return this.config[this.currentIdx].text;
    },
    key: function() {
        return this.config[this.currentIdx].key;
    }
}
我尝试将所有功能替换为:

computed: {
    ...this.config[this.currentIdx]
}
它通过了编译,但我在浏览器控制台中出错。我认为问题在于
computed
需要函数,但是扩展语法(…)返回对象。所以,我的问题是:有没有办法减少这种情况下的重复


谢谢

计算值可以返回对象,它们只需由函数返回即可。如果这不是你想要的,请告诉我,我会看看我能做些什么来帮助你

let vm=new Vue({
el:“根”,
数据:{
电流:0,
arrs:[
{
颜色:“背景色:蓝色;”,
文字:“大宝台大宝台”
},
{
颜色:“背景色:红色;”,
文字:“愤怒”
},
{
颜色:“背景色:绿色;”,
文字:“看它的作品!”
}
]
},
计算:{
currentObject:函数(){
返回this.arrs[this.current];
}
}
});


{{currentObject.text}


您可以创建一个包装帮助器,它将接收一个对象,并返回一个新对象,该对象具有映射到返回该键值的函数的相同键名,虽然我不确定这对计算属性的影响有多大。计算属性定义无法知道您的组件实例,因为它们是在编译时创建的。是的,但每次我想使用它时,我仍然需要键入
currentObject
。是否可以直接声明组件下的属性,并像这样使用:
而不是
?Afaik不使用纯Vue.js和js。可能使用Vuex或其他库的组合@Bennet Hardwick的答案在vanilla JS中是这样的,但是丢失“currentObject”可能会使代码不那么清晰。祝你好运!是的,你是对的,保留一个
currentObject
可以保护名称空间,所以我可能会这样做。如果你愿意,你可以为
color
做一个计算。它只会
返回currentObject.color
@RoyJ是的,你是对的。但是如果我在
currentObject
中有一堆属性,我必须一个接一个地创建这些计算值,这有点重复。。。