首页 > 解决方案 > 解构函数参数中的默认值

问题描述

我试图直接在 params 函数中解构值并使用通用对象影响默认值(对于每个 subProperties 解构):

例子

const initialTest = {
  name: 'myName',
  surname: 'mySurname',
  age: 100,
};

const MyComponent = ({
   test: { name, surname, age } = initialTest,
}) => { ... }

<MyComponent test={{ name: 'myNameFromProps' }} />

我的最终愿望是拥有 3 个 const和name,如果它们已定义,则具有来自(函数的参数)的值,如果没有定义,则具有来自的值。surnameagepropsinitialTest

使用此代码,如果test未在组件的 props 中定义,它将使用 initialTest,但如果仅使用name上面示例的 props 定义测试,我将得到:

name = 'myNameFromProps'
surname undefined
age undefined

而且我要 :

name = 'myNameFromProps'
surname = 'mySurname'
age = 100

对于 sur 我可以这样做:

const MyComponent = ({
   test: { name = initialTest.name, surname = initialTest.surname, age = initialTest.age },
}) => { ... }

但这绝对不好笑……

我尝试使用括号test: ({ name, surname, age } = initialTest),但不起作用,并且 eslint 说我是一个愚蠢的开发人员......他是对的 xD

如果您有任何建议/想法/解决方案,我很乐意阅读。谢谢大家!

标签: javascriptreactjsdestructuring

解决方案


除非您实际上initialTest在其他地方使用,否则您可以将其删除并在 的解构中列出默认值test

const MyComponent = ({
   test: { name: 'myName', surname: 'mySurname', age: 100 } = {},
}) => { ... }

确保= {}在最后有 ,以防test属性中不存在任何东西。


推荐阅读