javascript - 解构函数参数中的默认值
问题描述
我试图直接在 params 函数中解构值并使用通用对象影响默认值(对于每个 subProperties 解构):
例子
const initialTest = {
name: 'myName',
surname: 'mySurname',
age: 100,
};
const MyComponent = ({
test: { name, surname, age } = initialTest,
}) => { ... }
<MyComponent test={{ name: 'myNameFromProps' }} />
我的最终愿望是拥有 3 个 const和name
,如果它们已定义,则具有来自(函数的参数)的值,如果没有定义,则具有来自的值。surname
age
props
initialTest
使用此代码,如果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
如果您有任何建议/想法/解决方案,我很乐意阅读。谢谢大家!
解决方案
除非您实际上initialTest
在其他地方使用,否则您可以将其删除并在 的解构中列出默认值test
:
const MyComponent = ({
test: { name: 'myName', surname: 'mySurname', age: 100 } = {},
}) => { ... }
确保= {}
在最后有 ,以防test
属性中不存在任何东西。
推荐阅读
- powershell - 通过 powershell 和 appcmd 在 docker 中向 IIS 添加压缩级别失败并显示错误:格式错误的集合索引器
- windows - SetThreadExecutionState(ES_DISPLAY_REQUIRED) 不会重新打开屏幕
- c# - LiveCharts WPF 使用实时数据慢。提高 LiveCharts 实时绘图性能
- performance - 由于队列,Apache 响应缓慢
- python - 在用户模型django上使用外键存储用户的名字
- import - 是否可以在 Mosaic 中导入和导出计划作业?
- assembly - 如何在汇编中获取用户输入并转换为大写
- javascript - 使用从父类传递到子类的数据在地球上添加点
- azure-devops-extensions - 是否有可能将条件规则与 azure devops 扩展一起使用?
- r - 保存形成列表对象的 tidypmc 输出并根据 PMCID 将其保存到单个文件中