javascript - 可以在 proptype 形状中使用默认值吗?
问题描述
是否可以为具有所需键值对和默认键值对的对象定义类型?
例子:
const myComponent = (props) => {
const {
myObject: {
someRequiredString,
someNotRequiredString,
}
}
}
myComponent.propTypes = {
myObject: PropTypes.shape({
someRequiredString.string.isRequired,
}).isRequired,
}
myComponent.defaultProps = {
myObject: {
someNotRequiredString: '',
}
}
解决方案
因此,如果我理解您的正确,您需要非必需的对象位,如果该对象存在,它必须有 2 个必填字段,并且可能有一个非必填字段
所以我们在这里:
componentForUser.propTypes = {
myObject: PropTypes.shape({
name:PropTypes.string.isRequired,
secondName:PropTypes.string.isRequired,
age:PropTypes.string,
}),
}
componentForUser.defaultProps = {
myObject: {
name: 'defaultName',
secondName: 'defaultSecondName',
age:21
}
}
在这种情况下,如果不需要 User 对象,那么您将获得具有属性的 User:
myObject: {
name: 'defaultName',
secondName: 'defaultSecondName',
age:21
}
但是如果从道具中你会得到没有名字的对象用户,你会收到关于所需名字和第二个名字的警告。
推荐阅读
- spring - Spring Boot JPA - 查找给定位置范围(lat,lng)和半径(距离)内的位置
- javascript - 在创建新对象时没有传递任何值时如何使用默认参数?
- c# - Moq - 具有匿名类型表达式的设置方法
- ios - Xcode 11 实时预览在真实设备上立即崩溃
- javascript - React-redux 没有触发异步功能
- css - 删除 Vaadin 14 只读文本字段的虚线边框
- regex - 两个可能的有效字符串的逗号分隔列表的正则表达式
- python - Python - 美丽的汤。为什么我的抓取循环不起作用?
- c++ - 为什么模数运算符不适用于该代码?
- java - 如何将字符串转换为 int 以适合 if 语句