не распространяйте реакцию.Деталь


Синтаксис es6 для создания компонента React - export default class ExampleComponent extends React.Component.Однако это все еще работает, когда export default class ExampleComponent Без extends React.Component при условии, что import React from 'react'; Почему это происходит

2 4

2 ответа:

Легко оказаться в такой ситуации и пропустить то, что происходит, но разница действительно огромна: без расширения реагировать.Компонент, вы просто создаете класс JS. Кроме того:

  • поскольку он удовлетворяет требованиям класса React (который можно создать либо с помощью React.createClass(), либо в качестве класса ES6), он все равно будет "работать",
  • но вы не получите методы lifeCyle или доступ к состоянию (кто-то поправит меня, если я ошибаюсь в этом, довольно уверен, что вы не будете с помощью только класс bc там нет резервного экземпляра прилагается).
  • эти "простые" компоненты, как правило, быстрее реагируют и требуют меньше "машин", так как они просто (надеюсь) чистая функция, которая что-то визуализирует.
  • таким образом, их ключевое отличие здесь заключается в том, что только с классом, который имеет метод рендеринга, вы не "требуете" так много. этого должно быть достаточно большую часть времени; вам не нужен доступ к state для всего

Надеюсь, это поможет!

Вы создаете "чистый" класс JavaScript, но как только он не расширит React.Component, вы не сможете получить доступ к определенному поведению React. Проверьте , как расширяется работа.