【发布时间】:2021-03-21 08:43:37
【问题描述】:
我在加载我的网络应用程序时显示常见警告,但再也没有出现...
警告:无法对未安装的组件执行 React 状态更新。 这是一个空操作,但它表明您的应用程序中存在内存泄漏。 要修复,请取消 useEffect 中的所有订阅和异步任务 清理功能。
编辑**** 它是由这段代码引起的。我已将其缩小到一个功能。当我尝试设置水分状态时它会爆炸。我不知道为什么。
function getData (){
Axios.get("http://localhost:3001/api/get-value").then((response) => {
const recievedData = response.data;
const dataValue = recievedData.map((val) => {
return [val.value]
})
if (loading === true){
setLoading(false);
}
return parseInt(dataValue);
}).then((resp)=>setMoisture(resp))
}
React.useEffect(() => {
if (moisture === "initialState"){
getData();
}
}, []);
【问题讨论】:
-
我想我已将问题范围缩小到 getData 函数内。
-
setMoisture()是做什么的?那里使用了任何组件? -
是的,它是一个状态变量 [moisture, setMoisture] = useState['']
-
我已经编辑了我之前的帖子。这就是导致问题的原因。知道如何解决这个问题吗?我调用 setLoading 也是一个状态变量,没有问题
-
你见过这个问题吗?我觉得你的情况也差不多。 stackoverflow.com/questions/56442582/… 确保返回一个在
useEffect末尾进行清理的函数。类似return () => { ... };
标签: javascript reactjs asynchronous react-hooks use-effect