Подтвердить что ты не робот

`this.props` внутри` getDefaultProps() `of React?

Я пытаюсь добавить опору, которая зависит от других реквизитов, которые будут в основном переданы компонентом владельца компонента.

Итак, я сделал:

propTypes: {
  user: React.PropTypes.object,
  comment: React.PropTypes.object
},

getDefaultProps: function() {
  return {
    admire: new Admire({
              user: this.props.user, 
              comment:this.props.comment
            })
  };
}

Но похоже, что реквизиты user и comment недоступны при времени getDefaultProps.

Есть ли способ определить опору по умолчанию, которая зависит от других реквизитов, которые будут переданы из компонентов владельца?

4b9b3361

Ответ 1

getDefaultProps вызывается до создания любых экземпляров и, следовательно, не может полагаться на this.props. Это означало получить реквизиты по умолчанию, если владелец не передал их.

Альтернативным решением будет использование getInitialState, поскольку это даст вам доступ к this.props.user и this.props.comment.

Ответ 2

На самом деле вы не должны модифицировать реквизиты, я уверен, что вы получите предупреждение о консоли.

Вы можете сохранить Admire в состояние через функцию getInitialState.

например.

propTypes: {
    user: React.PropTypes.object,
    comment: React.PropTypes.object
},
getInitialState: function() {
    return {
        admire: new Admire({
            user: this.props.user,
            comment: this.props.comment
        });
    };
}