Порівняння компонентів React з об’єктно-орієнтованим програмуванням (OOP)

Порівнюючи компоненти React з об'єктно-орієнтованим програмуванням (OOP), можна провести кілька аналогій, особливо стосовно інкапсуляції, повторного використання та управління поведінкою. Ось як React співвідноситься з концепціями OOP:

pic

OOP vs ReactJS

1. Клас як компонент

  • OOP: Клас — це шаблон для створення об'єктів, які інкапсулюють дані (властивості) та поведінку (методи).
  • React: Компонент React, особливо класові компоненти, можна розглядати як шаблон класу, що управляє станом та поведінкою і рендерить елементи інтерфейсу.

Приклад:

Клас OOP:

class Person {  
 constructor(name, age) {  
 this.name = name;  
 this.age = age;  
 }  
greet() {  
 return `Hello, my name is ${this.name}`;  
 }  
}  
const person = new Person("Alice", 25);  
console.log(person.greet()); // "Hello, my name is Alice"  
React Class Component:  
class PersonComponent extends React.Component {  
 render() {  
 return 
Hello, my name is {this.props.name}
;    }   }   // Usage:    

2. Об'єкт як екземпляр

  • OOP: Об'єкт є екземпляром класу, інкапсулюючи свій стан і надаючи поведінку.
  • React: Коли ви використовуєте компонент React (наприклад, <Component />), він поводиться як екземпляр класу (або функції для функціональних компонентів). Властивості та стан представляють інкапсульований "стан" компонента.

3. Методи

  • OOP: Методи визначають поведінку класу.
  • React: Методи в класових компонентах використовуються для управління станом або обробки подій (наприклад, componentDidMount, користувацькі обробники подій).

Приклад:

OOP:

class Counter {  
 constructor() {  
 this.count = 0;  
 }  
increment() {  
 this.count++;  
 }  
}  
React:  
class Counter extends React.Component {  
 constructor(props) {  
 super(props);  
 this.state = { count: 0 };  
 }  
increment = () => {  
 this.setState({ count: this.state.count + 1 });  
 };  
 render() {  
 return {this.state.count};  
 }  
}  

4. Властивості vs Props

  • OOP: Властивості в об'єкті визначають його дані або конфігурацію.
  • React: Props є аналогічними властивостям, визначаючи дані або конфігурацію, яку передають компоненту.

5. Стан

  • OOP: Стан об'єкта — це поточне значення його властивостей.
  • React: Компонент React має стан (в класових компонентах або useState в функціональних компонентах), щоб керувати динамічними даними.

Приклад:

OOP:

class Light {  
 constructor() {  
 this.isOn = false;  
 }  
toggle() {  
 this.isOn = !this.isOn;  
 }  
}  
React:  
class Light extends React.Component {  
 constructor(props) {  
 super(props);  
 this.state = { isOn: false };  
 }  
toggle = () => {  
 this.setState({ isOn: !this.state.isOn });  
 };  
 render() {  
 return {this.state.isOn ? "On" : "Off"};  
 }  
}  

6. Спадкування vs Композиція

  • OOP: Спадкування використовується для спільного використання поведінки між класами.
  • React: Композиція є більш переважною, ніж спадкування. Компоненти складаються шляхом вкладення або комбінування їх для спільного використання поведінки та структури.

Приклад:

Спадкування OOP:

class Animal {  
 speak() {  
 return "Animal sound";  
 }  
}  
class Dog extends Animal {  
 speak() {  
 return "Bark";  
 }  
}  
React Composition:  
function Animal({ children }) {  
 return 
{children}
;  
}  
function Dog() {  
 return Bark;  
}  

7. Інкапсуляція

  • OOP: Об'єкти інкапсулюють свої властивості та методи, приховуючи деталі реалізації.
  • React: Компоненти інкапсулюють свою логіку, стан та рендеринг, виставляючи лише певний інтерфейс через props.

Перекладено з: Comparing React components with Object-Oriented Programming (OOP)

Leave a Reply

Your email address will not be published. Required fields are marked *