Files
freeCodeCamp/guide/russian/react/functional-components-vs-class-components/index.md
2018-10-16 21:32:40 +05:30

69 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Functional Components vs Class Components
localeTitle: Функциональные компоненты и компоненты класса
---
## Функциональные компоненты и компоненты класса
В React есть в основном два компонента:
* Функциональные компоненты
* Компоненты класса
## Функциональные компоненты
* Функциональные компоненты - это основные функции JavaScript. Они обычно являются функциями стрелок, но также могут быть созданы с помощью ключевого слова регулярной `function` .
* Иногда они называются «немыми» или «без гражданства», поскольку они просто принимают данные и отображают их в той или иной форме; то есть они в основном отвечают за предоставление пользовательского интерфейса.
* Реагирующие методы жизненного цикла (например, `componentDidMount` ) не могут использоваться в функциональных компонентах.
* В функциональных компонентах не используется метод рендеринга.
* Они в основном отвечают за пользовательский интерфейс и обычно являются только презентационными (например, компонент Button).
* Функциональные компоненты могут принимать и использовать реквизиты.
* Функциональные компоненты должны быть предпочтительными, если вам не нужно использовать состояние React.
```js
import React from "react";
const Person = props => (
<div>
<h1>Hello, {props.name}</h1>
</div>
);
export default Person;
```
## Компоненты класса
* Компоненты класса используют класс ES6 и расширяют класс `Component` в React.
* Иногда они называются «умными» или «состояниями», поскольку они склонны реализовывать логику и состояние.
* Методы жизненного цикла React могут использоваться внутри компонентов класса (например, `componentDidMount` ).
* Вы передаете реквизиты до компонентов класса и `this.props` доступ к ним с помощью `this.props`
```js
import React, { Component } from "react";
class Person extends Component {
constructor(props){
super(props);
this.state = {
myState: true;
}
}
render() {
return (
<div>
<h1>Hello Person</h1>
</div>
);
}
}
export default Person;
```
## Больше информации
* [Реагировать на компоненты](https://reactjs.org/docs/components-and-props.html)
* [Функциональные компоненты класса vs](https://react.christmas/16)
* [Функциональные компоненты Stateful vs без состояния](https://code.tutsplus.com/tutorials/stateful-vs-stateless-functional-components-in-react--cms-29541)
* [Состояние и жизненный цикл](https://reactjs.org/docs/state-and-lifecycle.html)