как useEffect поддерживает состояние

#javascript #reactjs #react-hooks

#javascript #reactjs #реагирующие хуки

Вопрос:

Мои вопросы концептуальны, и мы все знаем, что с помощью useEffect Hook каждый раз, когда useEffect вызывает после каждого рендеринга, React очищает useEffect от предыдущего рендеринга, прежде чем запускать эффекты в следующий раз, и снова объявляет useEffect с его новым рендерингом. Как useEffect поддерживает предыдущее состояние ?.

Комментарии:

1. Я не уверен, что действительно понимаю ваш вопрос, но если я все сделал правильно: похоже, вы пытаетесь использовать useEffect для синхронизации некоторого состояния с предоставленными вам реквизитами. Я думаю, что это плохой шаблон, и вам не следует использовать state в дочернем компоненте: просто вычислите значение, и если оно дорогое, вы можете добавить useMemo

2. Почему он должен поддерживать предыдущее состояние? Он просто запускает функцию в зависимости от некоторого условия, у вас есть замыкания для «сохранения» состояния в логике функции.

3. нет, я этого не делаю, и для этого я знаю, что use useLayoutEffect используется для синхронизации, но мой вопрос в другом. мой вопрос, если «react очищает эффекты использования от предыдущего рендеринга перед следующим запуском эффектов и снова объявляет useEffect», тогда как React поддерживает предыдущее состояние. например, я задаю значение count равным 0, а после обновления count становится 1, а затем и после рендеринга useEffect очищается и объявляется снова, тогда как и почему мы получаем значение count равное 1.

4. Пожалуйста, отредактируйте вопрос с помощью примера, который вы пытаетесь понять.

5. useEffect не имеет ничего общего с состоянием, вот почему

Ответ №1:

Просто погуглите. Короче говоря, react знает, какие компоненты монтируются, монтируются и т.д. Он отслеживает их все. Поскольку он отслеживает их все, он может назначать произвольные данные каждому из них. По сути, это и есть хуки.

Все, что делают хуки, по сути, предоставляет механизм, позволяющий использовать переменные экземпляра (некоторую форму внутреннего состояния, но не «состояние», как вы думаете в react) для функциональных компонентов.