Можем ли мы вызвать конструктор (реквизит) с другими именами в реагировать? - PullRequest
0 голосов
/ 16 апреля 2020
constructor(props) {
  super(props);

Учусь реагировать, я всегда сталкиваюсь с этими двумя строчками. Я понимаю, что супер должен быть написан, чтобы использовать метод " this ". Но почему мы всегда используем слово «реквизит»? Что если в нашем классе хранится информация о людях, и мы хотим передать: (возраст, имя, должность)? Действителен ли следующий код?

constructor(Age, Name, Job) {
super(Age, Name, Job);

Если нет, что вызывает «реквизит» внутри React.Component?

Ответы [ 2 ]

2 голосов
/ 16 апреля 2020

В реквизитах есть другая информация, которая нужна React.Component, поэтому вам придется вызывать super (реквизиты), иначе React.Component не получит эту важную информацию.

Но это не мешает вам от использования других данных внутри вашего конструктора, они могут быть переданы как props: props.age, props.name ...

1 голос
/ 16 апреля 2020

Класс React Component ожидает 3 аргумента для своего конструктора: props, context и updater.

Вы можете сделать

constructor(Age, Name, Job) {
  super(Age, Name, Job);

но вы должны иметь в виду, что вы просто переименовываете props, context и updater здесь, и это ничего особенного не делает.

Когда вы пропускаете реквизиты, такие как

<MyComponent age={age} name={name} />

Они доступны как свойства props. В constructor вы можете получить к ним доступ следующим образом:

constructor(props){ 
  super(props);

  console.log('age', props.age);
  console.log('name', props.name);
}
...