React defaultProps не работает

Я, вероятно, делаю что-то глупое, но я не могу заставить defaultProps работать.

export default class MyClass extends Component{
  static propTypes = {
    name: React.PropTypes.string.isRequired,
    field: React.PropTypes.object.isRequired
  }

  static defaultProps = {
    field: { value: '', errors: [] }
  }

  render() {
    // blah blah
  }
}

у меня есть код, который полагается на this.props.field.value и this.props.field.errors.length и все мои тесты, дующий с TypeError: 'undefined' is not an object (evaluating 'this.props.field.errors.length'), не должен ли мой реквизит по умолчанию дать ему значение по умолчанию? Первоначально, мой field prop-пустой объект.

1 ответов


изначально, мой field prop-пустой объект.

реквизит по умолчанию используется только в том случае, если для реквизита не передается значение. Это мелкое слияния, не слияния.

С docs (выделено мной):

результат getDefaultProps() будет кэшироваться и использоваться для обеспечения этого this.props.value будет иметь значение , если он не был указан родительского компонента.