(这个问题不是特定于Vue,而是在Vue项目中,这就是为什么在函数和变量前面奇怪地使用this
。)
我有一个函数返回一个被解构为两个变量的对象:
const { primaryNumber, typeOfExpression } = this.findPrimaryAndType(
this.naturalExpressionYearOfBirth,
this.gender,
);
我不希望变量再次成为primaryNumber
和typeOfExpression
,我希望它们是this.primaryNumber
和this.typeOfExpression
,它们引用了我的视图数据部分。
我使用以下代码找到了一个糟糕的解决方法:
this.primaryNumber = primaryNumber;
this.typeOfExpression = typeOfExpression;
但这不是最佳方式!我该怎么办?如果我在this
内的变量前添加{}
,我会收到错误,如果我删除了const,则不接受=
谢谢。
答案 0 :(得分:3)
您可以拼出解构目标,而不是隐式创建const
变量:
({
primaryNumber: this.primaryNumber,
typeOfExpression: this.typeOfExpression
} = this.findPrimaryAndType(
this.naturalExpressionYearOfBirth,
this.gender,
));
当然,这在简洁性方面并不是很有帮助。如果这两个属性是结果对象上唯一的属性,则可以使用Object.assign
:
Object.assign(this, this.findPrimaryAndType(
this.naturalExpressionYearOfBirth,
this.gender,
));
答案 1 :(得分:0)
您的解决方法是执行此操作的正确方法(至少从纯Javascript角度来看,不确定Vue如何处理此问题)。您可以使用Object.assign
:
const { primaryNumber, typeOfExpression } = this.findPrimaryAndType(
this.naturalExpressionYearOfBirth,
this.gender,
);
Object.assign(this, { primaryNumber, typeOfExpression });
或者,如果您想将所有返回的属性从findPrimaryAndType
复制到当前实例,则可以完全跳过解构:
const { naturalExpressionYearOfBirth, gender } = this;
Object.assign(this, this.findPrimaryAndType(naturalExpressionYearOfBirth, gender));