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

3.7 KiB
Raw Blame History

title localeTitle
Functional Components vs Class Components Функциональные компоненты и компоненты класса

Функциональные компоненты и компоненты класса

В React есть в основном два компонента:

  • Функциональные компоненты
  • Компоненты класса

Функциональные компоненты

  • Функциональные компоненты - это основные функции JavaScript. Они обычно являются функциями стрелок, но также могут быть созданы с помощью ключевого слова регулярной function .
  • Иногда они называются «немыми» или «без гражданства», поскольку они просто принимают данные и отображают их в той или иной форме; то есть они в основном отвечают за предоставление пользовательского интерфейса.
  • Реагирующие методы жизненного цикла (например, componentDidMount ) не могут использоваться в функциональных компонентах.
  • В функциональных компонентах не используется метод рендеринга.
  • Они в основном отвечают за пользовательский интерфейс и обычно являются только презентационными (например, компонент Button).
  • Функциональные компоненты могут принимать и использовать реквизиты.
  • Функциональные компоненты должны быть предпочтительными, если вам не нужно использовать состояние React.
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
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; 

Больше информации