#javascript #reactjs #react-hooks
#javascript #reactjs #реагирующие хуки
Вопрос:
в каком случае я не должен помещать пустой массив [] в качестве зависимостей в react useEffect? Нравится
React.useEffect(() => {
if (true) {
doStuff()
}
return () => null;
});
Является ли приведенный выше код допустимым?
Комментарии:
1. Это действительно. Это означает, что эффект запускается каждый раз, когда компонент повторно отображает
Ответ №1:
Ваш код действителен.
undefined
передается как зависимости и означает useEffect
, что выполняется при каждом рендеринге. Итак, если вы хотите выполнить какую-то работу, которую не следует запускать при каждом рендеринге (например, добавить прослушиватель событий), вы должны предоставить массив зависимостей.
Комментарии:
1. в каком случае мы ставим его как неопределенный?
2. если вы ничего не укажете (даже пустой массив) в качестве зависимости,
undefined
он будет передан.3. да, вы уже это говорили, в каком случае вы это делаете?
4. Вы можете ничего не передавать, если хотите что-то делать каждый раз при обновлении компонента. Но чаще всего вы, вероятно, хотите, чтобы этот эффект произошел только из-за чего-то другого. Возможно, вы хотите что-то делать только при изменении данных или, может быть, когда пользователь впервые видит компонент.
Ответ №2:
просто запомните 3 правила:
useEffect(()=>{},[]) //this is like componentDidMount
useEffect(()=>{}) //this will run every render
useEffect(()=>{},[dep1, dep2]) //this will run if one on de dependency change