我注意到在构造和返回带有值的对象时,我倾向于执行以下结构。
const { isLoading, fieldValues, stage } = state.personalInformation
return {
isLoading,
fieldValues,
stage,
};
只有三个参数,这很好,但是当我需要传递很多参数时,它会很快变得讨厌。
如果没有解构,就会感觉太过冗长。
return {
isLoading: state.personalInformation.isLoading,
fieldValues: state.personalInformation.fieldValues,
stage: state.personalInformation.stage,
};
有没有办法避免这种模式?
答案 0 :(得分:4)
如果目标是避免重复属性名称,那么现在唯一的方法就是给自己一个可重用的辅助函数,类似于:
function grab(obj, ...props) {
const result = {};
props.forEach(prop => result[prop] = obj[prop]);
return result;
}
用法:
return grab(state.personalInformation, "isLoading", "fieldValues", "stage");
示例:
var state = {
personalInformation: {
isLoading: true,
fieldValues: "bar",
stage: 14,
other: "something"
}
};
function grab(obj, ...props) {
const result = {};
props.forEach(prop => result[prop] = obj[prop]);
return result;
}
function foo() {
return grab(state.personalInformation, "isLoading", "fieldValues", "stage");
}
console.log(foo());

(但有18种不同的方法可以旋转grab
函数,这只是一种方法。)
您还可以使用grabAllBut
复制所有属性,但列出的属性除外,因为这是更好的选择...