是否可以通过必需的键值对和默认键值对来定义对象的类型?
示例:
const myComponent = (props) => {
const {
myObject: {
someRequiredString,
someNotRequiredString,
}
}
}
myComponent.propTypes = {
myObject: PropTypes.shape({
someRequiredString.string.isRequired,
}).isRequired,
}
myComponent.defaultProps = {
myObject: {
someNotRequiredString: '',
}
}
答案 0 :(得分:0)
因此,如果我理解您的要求是正确的,那么您需要非必需的对象位(如果该对象存在),它必须具有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
}
但是,如果从道具中获得对象User(用户名)而没有名称,则会捕获有关必需名称和secondName的警告。
答案 1 :(得分:0)
也许自从提出这个问题以来这已经改变了,但是你不能为这样的嵌套值提供 defaultProps。