可以在 proptype 形状中使用默认值吗?
Can a default value be used in a proptype shape?
是否可以为具有必需键值对和默认键值对的对象定义类型?
示例:
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
}
}
在这种情况下,如果不需要用户对象,您将获得具有以下属性的用户:
myObject: {
name: 'defaultName',
secondName: 'defaultSecondName',
age:21
}
但是如果从 props 中你会得到没有名字的对象 User,你会收到关于必需的名字和 secondName 的警告。
自从提出这个问题后,这可能已经改变,但您不能像这样为嵌套值提供 defaultProps。
是否可以为具有必需键值对和默认键值对的对象定义类型?
示例:
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
}
}
在这种情况下,如果不需要用户对象,您将获得具有以下属性的用户:
myObject: {
name: 'defaultName',
secondName: 'defaultSecondName',
age:21
}
但是如果从 props 中你会得到没有名字的对象 User,你会收到关于必需的名字和 secondName 的警告。
自从提出这个问题后,这可能已经改变,但您不能像这样为嵌套值提供 defaultProps。