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

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


仅使用三个参数就可以了,但是当我需要传递很多参数时,它很快就会变得讨厌。

如果不进行破坏,它会显得过于冗长。

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


有办法避免这种情况吗?

最佳答案

如果目标是避免重复属性名称,那么现在唯一的方法就是给自己一个可重用的辅助函数,类似于以下内容:

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复制所有属性(列出的属性除外),以备不时之需。

关于javascript - 如何避免破坏格局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43318365/

10-13 01:53