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
中有一堆属性,我必须一个接一个地创建这些计算值,这有点重复。。。