如何避免解构模式

时间:2017-04-10 08:35:09

标签: javascript ecmascript-6

我注意到在构造和返回带有值的对象时,我倾向于执行以下结构。

const { isLoading, fieldValues, stage } = state.personalInformation
return {
  isLoading,
  fieldValues,
  stage,
};

只有三个参数,这很好,但是当我需要传递很多参数时,它会很快变得讨厌。

如果没有解构,就会感觉太过冗长。

return {
  isLoading: state.personalInformation.isLoading,
  fieldValues: state.personalInformation.fieldValues,
  stage: state.personalInformation.stage,
};

有没有办法避免这种模式?

1 个答案:

答案 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复制所有属性,但列出的属性除外,因为这是更好的选择...