در React، پراپسها فقط برای انتقال داده از والد به فرزند استفاده میشوند و نباید تغییر کنند. اما برای مدیریت دادههایی که در طول زمان تغییر میکنند، از state استفاده میکنیم. این دادهها با hook معروف useState تعریف میشوند و با تغییر آنها، کامپوننت مربوطه و فرزندانش دوباره render میشوند.
فرض کنید میخواهیم متنی که کاربر در فیلد ورودی وارد میکند، در کنار آن نمایش داده شود. روش اولیه (غیرمؤثر):
let searchTerm = '';
const handleChange = (event) => {
searchTerm = event.target.value;
};این روش کار نمیکند چون React نمیداند که searchTerm باید وضعیت باشد. راهحل درست:
import * as React from 'react';
const Search = () => {
const [searchTerm, setSearchTerm] = React.useState('');
const handleChange = (event) => {
setSearchTerm(event.target.value);
};
return (
Searching for {searchTerm}.
);
};تابع useState یک مقدار اولیه دریافت میکند و آرایهای با دو مقدار بازمیگرداند:
با هر بار تغییر وضعیت، کامپوننت مربوطه دوباره render میشود و مقدار جدید در JSX نمایش داده میشود.
هر کامپوننت در React یک بار اولیه render میشود. سپس با هر تغییر در وضعیت یا پراپسها، کامپوننت و فرزندانش دوباره render میشوند. میتوانید با console.log() در هر کامپوننت، این رفتار را مشاهده کنید.
StrictMode).وضعیت در React ابزاری قدرتمند برای مدیریت دادههای پویا است. با استفاده از useState میتوان دادهها را تعریف، بهروزرسانی، و در رابط کاربری نمایش داد. این تغییرات باعث باز-render شدن کامپوننتها میشوند و تجربهای تعاملی برای کاربر فراهم میکنند.