2015-10-06 2 views
1

После Реагировать 0.13 мы можем использовать ES6 класс для создания Реагировать компоненты, как и выше:Необходимо ли, чтобы компонент React простирался от React.Component?

class A extends React.Component { 
    // ... 
} 

Однако, если я иногда забываю печатать extends React.Component компонент А еще работает хорошо для меня до тех пор, пока я не использовать простые методы подобный this.setState().

Я начинаю думать, что необходимо, чтобы компонент React простирался от React.Component.

В архитектуре, подобной FLUX или Redux, есть умные компоненты React и немые компоненты React. Смарт-те подключены к хранилищу данных, в то время как немые получают только реквизиты от родителей и render.I уже известно в React 0.14, мы можем просто написать чистая функция для немых.

Однако в интеллектуальных компонентов также существует разница, что некоторые компоненты имеют состояния в то время как некоторые don't.If разница между печатая extends React.Component и не только this.setState(), я просто не extends React.Component, когда мой компонент не должен управлять его собственное государство.

ответ

1

Необходимо ли, чтобы компонент React простирался от React.Component?

Не в React v0.13, но it will be in v0.14: Теперь классы компонентов

ES6 необходимо расширить React.Component, с тем чтобы лица без компонентов функции. ES3 module pattern будет продолжать работать.

Таким образом, чтобы поддерживать функции как простые компоненты без гражданства (что вы упомянули), кажется, что классы должны расширяться React.Component.

+0

Но почему «классы компонентов ES6 теперь должны расширять группу React.Component, чтобы включить компоненты функции без состояния»? – J22Melody

+0

Чтобы правильно определить, что такое функция без состояния и какая функция-конструктор представляет класс компонента. Функции конструктора должны быть вызваны с помощью 'new', функции stateless не должны. Об этом в GitHub есть целый поток. –

+0

Хорошо, thx! – J22Melody