Обработка эффекта использования

#react-native #use-effect

#react-native #использование-эффект

Вопрос:

 const UserProfile = ({
  user=[],
}) =>{ 
  useEffect(() => {
    console.log("mounted")
    console.log("inside: " user.id)
  },[]);
  
  console.log("outside :" user.id)
   return(
    <Text>hello</Text>
  );
};
 

Почему это возвращает эти журналы?
Я думаю user.id in useEffect должен возвращать то же самое

my console.log

Ответ №1:

Ваш эффект вызывается только один раз, во время монтирования. В момент монтирования user значение не установлено, как вы можете видеть в журналах ( outside :undefined и inside: undefined ). Затем, когда вы переходите user id к UserProfile компоненту, эффект не вызывается, потому что регистрация эффекта с пустым массивом зависимостей указывает, что он будет вызываться только при монтировании.

Пожалуйста, проверьте: https://reactjs.org/docs/hooks-effect.html (последняя желтая заметка)

Если вы хотите, чтобы ваш эффект вызывался при каждом user изменении свойства, добавьте его в массив зависимостей, как показано ниже:

 useEffect(() => {
...
},[user])
 

Ответ №2:

Попробуйте это:

 useEffect(() => {
  if (!user.id) {
    return
  }
  console.log("mounted")
  console.log("inside: " user.id)
},[user])