freeCodeCamp/guide/russian/react/functional-components-vs-cl.../index.md

69 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
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)