我们组长说我这样写的不对,让我想想怎么写更好,我这个脑子呀,想了半天没想明白。。。。因为这个是非必填项,所以我没有在rule来做,前辈们换你们的话会怎么写好?
onSaveComp() {
this.$refs.compForm.validate((valid) => {
if (valid) {
let params = {};
if (this.compForm.target != '' && !this.isURL(this.compForm.target)) {
this.$message.error('输入的跳转地址不正确!');
return false;
}
if (this.compForm.type == 'DATASOURCE') {
this.compForm.modes = this.compForm.modes.replace(/-/g, '').toUpperCase();
params = {
...this.compForm,
style: '',
};
} else {
params = {
appId: this.compForm.appId,
exts: '',
name: this.compForm.name,
nameEn: this.compForm.nameEn,
url: this.compForm.url,
type: 'IFRAME',
roleIds: this.compForm.roleIds,
status: this.compForm.status,
thumbnail: this.compForm.thumbnail,
target: this.compForm.target,
};
}
createComp(params).then(() => {
this.$message.success('创建成功');
parent.history.back();
// this.goBack();
});
}
});
},
“不对”是指写的位置不对?做法不对?代码不对?还是其他什么不对?
不清楚业务,也不清楚结构,所以只说说代码
isURL
有没有兼容""
的情况?如果有,那第 1 个条件就可省略。另外,target 是否有可能是 undefined?如果有可能,要看
isURL
是否会处理,不会就需要加判断。不过我觉得 isURL 作为工作函数,目的就是减少代码量,应该充分考虑这些日常情况。另外
if (valid)
贯穿了整个 Lambda,可以直接使用反向条件提前结束函数,减少缩进层次下面 else 中对 params 的赋值也可以参考上面的
...this.comForm
,不用一个个去(前提是 comForm 中可能存在的多余属性不会产生副作用)