2016-08-17 10 views
-1

Зачем вам нужен супер в приведенном ниже примере? Что это действительно захватывает от React.Component, что это нужно сделать для реквизита? Почему супер необходимо, если вы уже расширяете CommentList от React.Component - не будут ли обработаны реквизиты, которые передаются конструктору, как если бы он был передан в React.Component?Какова цель использования супер в расширении React.Component?

class CommentList extends React.Component { 
    constructor(props) { 
    super(props); 
    this.state = { comments: [] } 
    } ... 
} 

ответ

0
class CommentList extends React.Component { 
    constructor(props) { 
    console.log(this) // Error 
    } 
} 

this не не инициализирован, пока super() называется

1

Это концепция объектно-ориентированного программирования (ООП) в отношении наследования.

Классы могут наследовать свойства и методы от родительских классов (в вашем случае CommentList наследует от React.Component [отсюда ключевое слово расширяет])

Однако, когда вы называете метод с тем же именем с новым классом, метод родительского класса перезаписывается.

Эта идея также применима к конструкторам (которые являются методами, выполняемыми при создании экземпляра).

По характеру ООП, когда вы объявили конструктор в своем CommentList, вы перезаписали метод конструктора для React.Component.

Из-за этого вам нужно вызвать super(), чтобы убедиться, что конструктор родителя также использует реквизиты. (следовательно, супер (реквизит)).

 Смежные вопросы

  • Нет связанных вопросов^_^