Загрузка...
Загрузка...
Продолжая работу с платформой, вы принимаете условия Политики конфиденциальности и использование файлов cookie.
👋 Привет! Я Дастан, автор Hack Frontend. Всегда рад профессиональному нетворкингу => добавляйся в LinkedIn.
useState — это хук в React, который позволяет добавлять состояние в функциональные компоненты. До появления хуков состояние было доступно только в классовых компонентах. С useState состояние можно использовать в функциональных компонентах, что упрощает написание и поддержку кода.
Инициализация состояния. Хук useState принимает начальное значение и возвращает массив с двумя элементами:
Обновление состояния. Когда состояние изменяется, компонент перерисовывается с новым значением состояния.
import { useState } from "react";
function Counter() {
const [count, setCount] = useState(0); // Инициализация состояния с начальным значением 0
const increment = () => {
setCount(count + 1); // Обновление состояния
};
return (
<div>
<p>Счётчик: {count}</p>
<button onClick={increment}>Увеличить</button>
</div>
);
}
setCount(prevCount => prevCount + 1);
function Counter() {
const [count, setCount] = useState(0);
const increment = () => {
setCount(prevCount => prevCount + 1); // Используем предыдущее состояние
};
return (
<div>
<p>Счётчик: {count}</p>
<button onClick={increment}>Увеличить</button>
</div>
);
}
useState и перерисовка:
Когда состояние изменяется, React перерисовывает компонент с новым значением состояния, что позволяет создавать динамичные и интерактивные интерфейсы.
Когда вы передаете функцию в useState, эта функция будет выполнена только один раз — при первом рендере компонента. Это может быть полезно для оптимизации производительности, если вычисления тяжелые или если нужно сделать что-то перед установкой начального состояния.
Вместо того чтобы вычислять значение каждый раз при рендере, React вызовет эту функцию только один раз и использует результат в качестве начального состояния.
import { useState } from "react";
// Функция для сложных вычислений
function compute() {
console.log("Вычисления выполняются...");
return 42; // Например, вычисление сложной логики
}
function MyComponent() {
const [count, setCount] = useState(() => compute()); // compute вызывается только один раз
return (
<div>
<p>Значение: {count}</p>
</div>
);
}