#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 должен возвращать то же самое
Ответ №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])