破坏函数参数中的默认值

问题描述 投票:2回答:2

我试图直接以参数形式对值进行解构,并使用通用对象影响默认值(对于每个被解构的子属性:

示例

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

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

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

我最后的愿望是具有3个常量namesurnameage,如果定义了它们,则它们的值来自props(函数的参数),如果没有,则来自initialTest的值。

使用此代码,如果未在组件的prop中定义test,它将使用initialTest,但是如果仅使用上述示例的name prop来定义test,我将得到:

name = 'myNameFromProps'
surname undefined
age undefined

而且我想要:

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

对于我,我可以用:

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

但是那绝对不好笑...

我尝试使用括号test: ({ name, surname, age } = initialTest),,但没有用,埃斯林特说我是个愚蠢的开发者,他对xD是对的

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

javascript reactjs destructuring
2个回答
2
投票

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

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

如果= {}属性中没有任何内容,请确保在末尾有test

© www.soinside.com 2019 - 2024. All rights reserved.