#javascript #reactjs
#javascript #reactjs
Вопрос:
Особенно та часть, когда мы предоставляем пустой массив зависимостей для useEffect. Потому что, насколько мне известно, при каждом рендеринге есть эффект. Но как next useEffect узнает, что он должен выполняться ровно один раз?
Комментарии:
1. reactjs.org/docs/hooks-effect.html
2. Дэн Абрамов написал об этом обстоятельную статью .
3. @Бахман. Исследовательская работа никогда не была обязательным требованием для того, чтобы задать вопрос о переполнении стека. Вы найдете некоторые из лучших сообщений с тем, что выглядит как отсутствие исследовательской работы автора. Обратите внимание, что два пользователя разместили полезную ссылку перед вашим комментарием здесь. Предположим, что они понимают, о чем спрашивают. Один из них также предоставил ответ.
Ответ №1:
Но как next useEffect узнает, что он должен выполняться ровно один раз?
Потому что, когда вы указываете массив зависимостей, ловушка эффекта вызывает только обратный вызов:
- На горе, и
- Если что-то в массиве изменится
Пустой массив — это пустой массив; в нем никогда ничего не меняется. Таким образом, обратный вызов выполняется только один раз, при монтировании, и никогда больше.
Потому что, насколько мне известно, при каждом рендеринге возникает эффект.
Я не уверен, что вы подразумеваете под «эффектом», но если вы используете «эффект» таким образом useEffect
, тогда нет, нет, если вы предоставляете массив в качестве второго аргумента useEffect.
, если вы не предоставляете массив, тогда ловушка эффекта вызовет обратный вызовпосле каждого вызова функции компонента. Но с массивом это происходит только при монтировании и когда что-то меняется.
Комментарии:
1. Значит, это всегда один эффект использования после рендеринга в случае отсутствия зависимостей?
2. @HarisJamil — Да, так написано в документации . «По умолчанию эффекты запускаются после каждого завершенного рендеринга, но вы можете включить их только при изменении определенных значений «.