Когда использовать конструктор и супер в Polymer 2.0?

1

Следующая модель используется при создании веб-компонентов Polymer 2.0 ES6.

constructor() {
  super();
}

Здесь в документации описывается вызов super(); функции при определении элемента.

Однако здесь, в приложении Shop, шаблон выполняется только 3 раза, в следующих элементах: shop-app.html, shop-ripple-container.html, shop-tabs-overlay.html.

Когда нам нужно вызвать super()? Когда этот вызов должен находиться внутри функции constructor()? И каковы последствия не вызова super() как появляется в случае приложения Shop?

Изменение: пользователь (@4castle) предположил, что этот вопрос может быть дубликатом этого вопроса. Я почтительно не согласен. Этот вопрос касается Полимера, в то время как другой - Реакт. Другой вопрос задает вопрос о аргументах, переданных функции super(). Этот вопрос хочет знать, что происходит, когда super() не вызывается и где наилучшее место для вызова (т.е. Внутри constructor() или нет).

  • 0
    Возможная копия того, что super () делает с любыми аргументами?
  • 0
    super() требуется, когда класс extends другой класс. В противном случае, он будет бросать ReferenceError , если вы пытаетесь получить доступ к this без первого вызова super() .
Показать ещё 1 комментарий
Теги:
polymer
polymer-2.x

2 ответа

2
Лучший ответ

Когда нам нужно вызвать super()?

super() вызывает конструктор суперкласса элементов (родительский класс). Если определение элемента определяет класс, который расширяет другой класс, а super() не вызывается явно, элемент вызывает конструктор суперкласса по умолчанию.

Когда этот вызов должен находиться внутри функции constructor()?

Правильное место вызова super() находится внутри метода element constructor().

И каковы последствия не вызова super() как появляется в случае приложения Shop?

В случае, когда,

class MyElement extends Polymer.Element {...}

как в случае с приложением Shop App - конструктор Polymer.Element вызывается по умолчанию, если super() не вызывается явно.

1

На самом деле это также хорошая практика, чтобы вызвать следующее, чтобы получить полную выгоду от вашего супер (родителя):

ready() {
  super.ready();
}

Это вызовет готовую функцию в элементе, когда ваш компонент готов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню