Синтаксис es6 для создания компонента React равен export default class ExampleComponent extends React.Component
. Однако он все еще работает, когда export default class ExampleComponent
без extends React.Component
при условии, что import React from 'react'
; почему это происходитне распространяются на React.Component
ответ
Легко быть в этой ситуации и пропустить то, что происходит, но разница действительно огромная: без расширения React.Component вы просто создаете класс JS. Кроме того:
- , потому что он удовлетворяет требованиям, предъявляемым к React класса (который вы можете создать либо
React.createClass()
или как класс ES6), он все равно «работа», - но не будет получить методы lifeCyle или получить доступ к состоянию (кто-то исправит меня, если я ошибаюсь в этом, довольно уверен, что вы не будете просто с классом bc, если нет экземпляра поддержки).
- эти «более простые» компоненты, как правило, быстрее реагируют на сделки и требуют меньше «механизмов», поскольку они - просто (надеюсь) чистая функция, которая что-то делает.
- так, они имеют ключевое отличие в том, что только с классом, который имеет метод визуализации, вы не «требуете» столько же. этого должно быть достаточно больше всего того времени; Вам не нужен доступ к
state
для всех
Надеюсь, что это поможет!
Реагировать на документацию по эту тему: https://facebook.github.io/react/docs/state-and-lifecycle.html. Я согласен с @markthethomas. Из документов: «... компоненты, определенные как классы, имеют некоторые дополнительные функции. Локальное состояние - это то, что: функция доступна только для классов». Документы не указывают это явно для крючков жизненного цикла, но то же самое верно для них. –
Вы создаете «чистый» JavaScript class, но раз он не расширяет React.Component
, вы не сможете получить доступ к конкретному поведению React. Проверьте how extends work.
проверьте это https://github.com/gaearon/flux-react -router-example, много компонентов React не расширяют React.Component, но все равно отлично работает – Guigui
Я считаю, что это из-за этой устаревшей библиотеки: https://github.com/gaearon/react-pure-render –
- 1. Темы не распространяются на деятельность
- 2. Рендеринг React.Component
- 3. Переменные сеанса не распространяются
- 4. дети-ретрансляторы не распространяются
- 5. Шаблоны Twig не распространяются
- 6. Уведомления BigTextStyle не распространяются на FirebaseMessagingService
- 7. Kubernetes pods не распространяются на разные узлы
- 8. Реакция: createClass vs React.Component? почему в учебнике игнорируется React.Component
- 9. Корневой компонент, как React.component
- 10. React.Component vs React.PureComponent
- 11. React.Component SetState атомных обновления
- 12. расширение класса React.Component
- 13. React.Component vs React.createClass
- 14. BeanProperties.list() наблюдать() не распространяются ListChangeEvent
- 15. Deletes не распространяются в ассоциациях
- 16. Углеродные связки компонентов не распространяются
- 17. Уточнения потока не распространяются «вверх»?
- 18. Внешний компонент реакции не может видеть React.Component
- 19. Замена React.createClass с расширением React.Component
- 20. React.component метод возврата в заблуждение
- 21. Как распространяются исключения?
- 22. Изменения одной переменной распространяются на другую
- 23. распространяются MultiPointTouchArea событие
- 24. Таблицы SQL Server распространяются на многие таблицы
- 25. GridBagLayout: панели распространяются на другие панели
- 26. Шаблоны Django не распространяются должным образом
- 27. Изменения основного языка приложения iTunesConnect не распространяются
- 28. События мыши из JTextField не распространяются
- 29. Сенча: Не распространяются ли события вниз?
- 30. Группа ElasticSearch и распространяются на ведра
Первый имеет доступ к методам жизненного цикла (например, 'componentDidMount'), а последний - нет; это статический компонент. – lux
@lux У последнего есть доступ к 'render ', чтобы проверить это https://github.com/gaearon/flux-react-router-example – Guigui
И только' render() ', в документации: https: // facebook. github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components -> '" Эти компоненты ведут себя так же, как класс React, только с определенным методом рендеринга "' – lux