javascript - 有没有一种优雅的方式将参数对象传递给函数?
问题描述
我有以下方法,它获取一组数据并从中创建模型的新实例。以对象的reportTemplateData
形式出现,我对其进行解构,以便将其作为属性列表传递给类构造函数。
虽然这可行,但我觉得它可以更有效地完成。有没有更优雅的方法可以在一行左右做到这一点?
addReportTemplate(reportTemplateData) {
const {
id,
pageId,
profileTemplateId,
userId,
name,
description,
createdAt,
updatedAt,
deletedAt,
createdBy,
updatedBy,
deletedBy,
reportTemplateColumns,
} = reportTemplateData;
const newReportTemplate = new ReportTemplate(
id,
pageId,
profileTemplateId,
userId,
name,
description,
createdAt,
updatedAt,
deletedAt,
createdBy,
updatedBy,
deletedBy,
reportTemplateColumns,
);
this.reportTemplates.push(reportTemplates);
}
编辑
值得注意的是,如果您选择const newReportTemplate = new ReportTemplate({...reportTemplateData})
解决方案,则必须将数据属性与类构造函数参数精确匹配。这对我来说是一个问题,其中数据以 snake_case 的形式输入,而我的 Javascript 模型正在寻找 camelCase。
解决方案
假设只有您要传递的属性在该对象中。
addReportTemplate(reportTemplateData) {
const newReportTemplate = new ReportTemplate({ ...reportTemplateData });
this.reportTemplates.push(reportTemplates);
}
如果您要排除一些属性,请对其进行解构。
addReportTemplate(reportTemplateData) {
const {
excluded1,
excluded2,
...properties,
} = reportTemplateData;
const newReportTemplate = new ReportTemplate({ ...properties });
this.reportTemplates.push(reportTemplates);
}
这两种方法都需要更改 ReportTemplate 类,其中构造函数将对象作为参数。请参阅此方法如何在此笔中发挥作用的两个示例。
推荐阅读
- docker - 无法在docker中连接neo4j和elasticsearch
- generics - 带有泛型的 Kotlin 继承/声明
- javascript - React Router 不渲染组件
- javascript - NodeJs Async 发出值 mongoose 保存和查找
- python - 如何在 Matplotlib 中使用按钮在图表之间切换
- java - 写入后如何等待firebase的响应
- spring - 控制器或 RestController
- java - 在 Eclipse IDE 中运行没有包的 Java 代码
- reactjs - 使用 TypeScript 反应 Refs:无法读取未定义的属性“当前”
- java - 在排序方法中使用匿名类