可以在原型形状中使用默认值吗?

时间:2019-08-13 11:32:20

标签: javascript reactjs react-proptypes

是否可以通过必需的键值对和默认键值对来定义对象的类型?

示例:

const myComponent = (props) => {
  const {
    myObject: {
      someRequiredString,
      someNotRequiredString,
    }
  }
}

myComponent.propTypes = {
  myObject: PropTypes.shape({
    someRequiredString.string.isRequired,
  }).isRequired,
}

myComponent.defaultProps = {
  myObject: {
    someNotRequiredString: '',
  }
}

2 个答案:

答案 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。

相关问题