Встречается на собеседованиях • сегодня

Как реализовать useState для сохранения состояния между вызовами функции

React использует массив hooks для хранения состояния между рендерами. Каждый вызов useState добавляет новое состояние в этот массив и запоминает индекс. При последующих рендерах React обращается к тому же индексу.

Пример упрощённой реализации:

js
let hooks = [];
let currentHook = 0;

function useState(initialValue) {
const hookIndex = currentHook++;
if (hooks[hookIndex] === undefined) {
hooks[hookIndex] = initialValue;
}

const setState = (newValue) => {
hooks[hookIndex] = newValue;
render(); // Триггерит перерендер
};

return [hooks[hookIndex], setState];
}

// Перед каждым рендером сбрасываем индекс
function render() {
currentHook = 0;
// ...логика рендера компонента
}

text

Ключевые моменты:
1. Состояние хранится вне компонента
2. Порядок вызовов хуков должен быть одинаковым при каждом рендере
3. При обновлении состояния инициируется перерендер
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы