Різниця між React State і реквізитом

У цій статті React State vs Props ми розберемо основні відмінності між двома дуже важливими компонентами реагування, станом та реквізитом. Ми розкриємо кілька основних прикладів, щоб з’ясувати відмінності між станом та реквізитом. Також ми побачимо ситуації, коли можна використовувати стан або реквізит.

Стан: Держава може розглядатися як екземпляр класу компонентів реагування і в основному використовується для спілкування з компонентом. Стан реагуючого компонента - це об'єкт, який містить інформацію, яка може або не може змінюватися протягом життєвого циклу компонента. Державний об'єкт зберігає значення властивостей, пов'язаних з компонентом. Щоразу, коли відбувається зміна властивостей, пов’язаних з компонентом, значення, пов'язане з об'єктом стану, змінюється, і компонент буде повторно відображати себе, а це означає, що він змінить себе новими значеннями. Ось приклад, який пояснить стан реакції:

Код:

class Bike extends React.Component (
constructor(props) (
super(props);
this.state = (
Company: "Yamaha",
Modelnumber : "R15",
color: "blue",
launch-year: 2001
);
)
render() (
return (
Name (this.state. Company)
This is a (this.state.color)
(this.state. Modelnumber)
from (this.state. launch-year).

);
)
)

class Bike extends React.Component (
constructor(props) (
super(props);
this.state = (
Company: "Yamaha",
Modelnumber : "R15",
color: "blue",
launch-year: 2001
);
)
render() (
return (
Name (this.state. Company)
This is a (this.state.color)
(this.state. Modelnumber)
from (this.state. launch-year).

);
)
)

class Bike extends React.Component (
constructor(props) (
super(props);
this.state = (
Company: "Yamaha",
Modelnumber : "R15",
color: "blue",
launch-year: 2001
);
)
render() (
return (
Name (this.state. Company)
This is a (this.state.color)
(this.state. Modelnumber)
from (this.state. launch-year).

);
)
)

class Bike extends React.Component (
constructor(props) (
super(props);
this.state = (
Company: "Yamaha",
Modelnumber : "R15",
color: "blue",
launch-year: 2001
);
)
render() (
return (
Name (this.state. Company)
This is a (this.state.color)
(this.state. Modelnumber)
from (this.state. launch-year).

);
)
)

class Bike extends React.Component (
constructor(props) (
super(props);
this.state = (
Company: "Yamaha",
Modelnumber : "R15",
color: "blue",
launch-year: 2001
);
)
render() (
return (
Name (this.state. Company)
This is a (this.state.color)
(this.state. Modelnumber)
from (this.state. launch-year).

);
)
)

Вихід:

Тепер розглянемо, що ми хочемо змінити властивості компонента. Для цього існує метод, який називається setState (). Зауважте, що ви завжди повинні використовувати метод setState (), щоб змінити стан компонента, він переконається, що компонент повторно надасть свій стан.

Код:

class Car extends React.Component (
constructor(props) (
super(props);
this.state = (
Company: "Ford",
Modelnumber : "Mustang",
color: "red",
launch-year: 1964
);
)
changeColor = () => (
this.setState((color: "green"));
)
render() (
return (
My (this.state.Company)

class Car extends React.Component (
constructor(props) (
super(props);
this.state = (
Company: "Ford",
Modelnumber : "Mustang",
color: "red",
launch-year: 1964
);
)
changeColor = () => (
this.setState((color: "green"));
)
render() (
return (
My (this.state.Company)

class Car extends React.Component (
constructor(props) (
super(props);
this.state = (
Company: "Ford",
Modelnumber : "Mustang",
color: "red",
launch-year: 1964
);
)
changeColor = () => (
this.setState((color: "green"));
)
render() (
return (
My (this.state.Company)

Це (this.state.color)
(this.state.Modelnumber)
з (this.state.launch-year).


type = "кнопка"
onClick = (this.changeColor)
> Зміна кольору велосипеда
);
)
)

У наведеному вище коді ми додали кнопку при натисканні, на якій будуть внесені нові зміни на компонент. Вищевказаний код дасть наступний вихід при натисканні кнопки.

Вихід:

Реквізит: Реквізити в ReactJs використовуються для надсилання даних компонентам. Реквізит еквівалентний чистим параметрам функції JavaScript. Оскільки чисті параметри функцій не можуть бути змінені після призначення, ми не можемо змінити їх значення. Наведений нижче приклад покаже, як використовуються реквізити:

Код:

class Bike extends React.Component (
render() (
return This is (this.props.Companyname)
)
)
const component = ;

class Bike extends React.Component (
render() (
return This is (this.props.Companyname)
)
)
const component = ;

class Bike extends React.Component (
render() (
return This is (this.props.Companyname)
)
)
const component = ;

Вихід:

Якщо компонент має конструктор, об'єкт реквізиту повинен бути переданий конструктору за допомогою супер. Ось приклад:

Код:

class Bike extends React.Component (
constructor(props) (
super(props);
)
render() (
return This is a Bike ;
)
)

class Bike extends React.Component (
constructor(props) (
super(props);
)
render() (
return This is a Bike ;
)
)

class Bike extends React.Component (
constructor(props) (
super(props);
)
render() (
return This is a Bike ;
)
)

Вихід:

Порівняння між головами та реквізитами (Інфографіка)

Нижче наведено чотири найкращих порівняння між React State і Props :

Ключові відмінності між Реактивним Станом та Реквізитом

Давайте обговоримо деякі основні відмінності між Реактивним штатом проти реквізитом :

  1. Реквізити є незмінними, тому що їх вміст не може бути змінено після призначення, але стан - це об'єкт, який використовується для зберігання даних, які можуть змінюватися в майбутньому, а також стан контролює поведінку компонента після внесення змін.
  2. Як реквізити, так і стани використовуються для зберігання даних, що відносяться до компонента.
  3. Штати можна використовувати лише в компонентах класу, тоді як реквізити не мають такого обмеження.
  4. Реквізити, як правило, встановлюються материнським компонентом, тоді як станом керують обробники подій, тобто ними керує сам компонент.
  5. Стан є локальним для компонента і не може використовуватися в інших компонентах, тоді як Реквізити дозволяють дочірнім компонентам читати значення з батьківських компонентів.

Таблиця порівняння Реактивного стану проти реквізиту

У таблиці нижче наведено порівняння між React State і Props :

Реагує держава Реквізити
Стан реагування є змінним, і його значення може змінюватися відповідно до вимог.Реквізити незмінні, тобто їх зміст не може бути змінено після призначення.
Штати можуть використовуватися лише компонентами класу.Реквізит можна використовувати як класом, так і іншими компонентами.
Встановити батьківський компонент.Встановіть обробники подій, тобто вони повністю управляються самим компонентом.
Стан є локальним для компонента і не може використовуватися в інших компонентах.Реквізити дозволяють дочірнім компонентам читати значення з батьківських компонентів.

Висновок

Розкривши особливості стану та реквізиту, ми дійшли висновку, що коли є можливість зміни властивостей, пов’язаних із компонентом, тоді слід віддавати перевагу стану, оскільки це дозволяє повторно надавати властивості. Реквізит, з іншого боку, дозволяє дочірнім компонентам отримати доступ до методів, визначених у батьківських компонентах, це мінімізує потребу в дочірніх компонентах мати свій стан. Реквізити доступні лише для дочірніх компонентів. Варто зазначити, що стан та реквізити є дуже важливими складовими архітектури реагування.

Рекомендовані статті

Це посібник щодо Реактивної держави проти реквізиту. Тут ми також обговорюємо ключові відмінності React State vs Props від інфографіки та таблиці порівняння. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Питання для інтерв'ю GitHub
  2. Найкращі відмінності - Джира проти Гітхуба
  3. Топ 19 запитань щодо інтерв'ю ReactJs
  4. 10 найкращих застосувань реактивної JS
  5. Топ-11 інструментів реагування з їх особливостями