Reactjs 如何使用React Native中的only if语句返回useEffect
当我在页面中输入时,我使用useffect来定义变量值,但有时会收到以下警告: 警告:无法对已卸载的组件执行React状态更新。 这是一个no-op,但它表示应用程序中存在内存泄漏。 若要修复,请取消useEffect中的所有订阅和异步任务 清理功能 以下是我的useEffect函数代码:Reactjs 如何使用React Native中的only if语句返回useEffect,reactjs,react-native,react-hooks,use-effect,Reactjs,React Native,React Hooks,Use Effect,当我在页面中输入时,我使用useffect来定义变量值,但有时会收到以下警告: 警告:无法对已卸载的组件执行React状态更新。 这是一个no-op,但它表示应用程序中存在内存泄漏。 若要修复,请取消useEffect中的所有订阅和异步任务 清理功能 以下是我的useEffect函数代码: useEffect(() => { if(hierarchy == '1'){ setJob('Investigador') }
useEffect(() => {
if(hierarchy == '1'){
setJob('Investigador')
}
if(hierarchy == '2'){
setJob('Administrador')
}
if(hierarchy == '0'){
setJob('Novo Utilizador')
}
}, [])
我知道我应该在函数中返回一些东西来清理它,但由于我只使用if而不是const,我如何才能返回以避免出现此错误?在应用程序中设置状态时,应该使用清理函数。 考虑使用<代码>安装的变量,以判断它是否应该跳过对SETSATE的调用或否。
import React, { useEffect, useState, useRef } from "react";
//inside component:
const mounted = useRef(true);
useEffect(() => {
mounted.current = true;
if (mounted.current) {
if(hierarchy == '1'){
setJob('Investigador')
}
if(hierarchy == '2'){
setJob('Administrador')
}
if(hierarchy == '0'){
setJob('Novo Utilizador')
}
}
return () => (mounted.current = false);
}, [])
我可以像这样用在每一个类似的useEffect函数上吗?是的,你可以用这个!请查看更新的答案。我忘记添加
if(mounted.current){}