Node.js 使用异步函数导致数据泄漏

Node.js 使用异步函数导致数据泄漏,node.js,reactjs,mongodb,axios,use-effect,Node.js,Reactjs,Mongodb,Axios,Use Effect,我在使用非同步函数时遇到数据泄漏,导致我的应用程序在导航期间无法加载第二页 我在get请求中使用了async/await,并且我尝试使用清理功能来防止此泄漏,但它不起作用 如何修复此漏洞,并在加载页面时仍获取要加载的数据 import React, { useEffect, useState, useContext } from "react"; import ReactTable from "react-table"; import "react-table/react-table.css";

我在使用非同步函数时遇到数据泄漏,导致我的应用程序在导航期间无法加载第二页

我在get请求中使用了async/await,并且我尝试使用清理功能来防止此泄漏,但它不起作用

如何修复此漏洞,并在加载页面时仍获取要加载的数据

import React, { useEffect, useState, useContext } from "react";
import ReactTable from "react-table";
import "react-table/react-table.css";
import axios from "axios";
import StatusContext from "../../context/status/statusContext";

const Table = props => {
  const [tableData, setTableData] = useState([]);

  const statusContext = useContext(StatusContext);

  useEffect(async () => {
    await axios
      .get("/api/status")
      .then(function(response) {
        console.log(response.data);
        setTableData(
          response.data.filter(item => {
            let itemDate = new Date(item.date);
            let variableDate = new Date() - 604800000;

            return itemDate > variableDate;
          })
        );
      })
      .catch(function(error) {
        console.log(error);
      });
  }, [statusContext]);

  const columns = [
    {
      id: "Name",
      Header: "Name",
      accessor: "name"
    },
    {
      Header: "Date",
      accessor: "date"
    },
    {
      Header: "Comment",
      accessor: "comment"
    }
  ];

  return (
    <ReactTable
      data={tableData}
      columns={columns}
      pivotBy={["date"]}
      defaultPageSize={7}
      minRows={5}
    />
  );
};

export default Table;

import React,{useffect,useState,useContext}来自“React”;
从“反应表”导入反应表;
导入“react table/react table.css”;
从“axios”导入axios;
从“../../context/status/StatusContext”导入StatusContext;
const Table=props=>{
const[tableData,setTableData]=useState([]);
const statusContext=useContext(statusContext);
useffect(异步()=>{
等待axios
.get(“/api/status”)
.然后(功能(响应){
console.log(response.data);
可设置数据(
response.data.filter(项=>{
设itemDate=新日期(item.Date);
设variableDate=新日期()-604800000;
返回itemDate>variableDate;
})
);
})
.catch(函数(错误){
console.log(错误);
});
},[statusContext]);
常量列=[
{
id:“姓名”,
标题:“姓名”,
访问者:“名称”
},
{
标题:“日期”,
访问者:“日期”
},
{
标题:“评论”,
访问者:“评论”
}
];
返回(
);
};
导出默认表;

确实没有必要将
async/await
引入这种情况,事实上,如果这样做,
useffect
将不起作用。您可以从
useffect
返回的唯一内容是清理函数,
async
函数返回承诺

这应该可以正常工作,包括一个清理功能,以防在承诺解决之前卸载组件:


useffect(()=>{
让isMounted=真;
axios
.get(“/api/status”)
.然后(功能(响应){
如果(!isMounted){
返回;
}
console.log(response.data);
可设置数据(
response.data.filter(项=>{
设itemDate=新日期(item.Date);
设variableDate=新日期()-604800000;
返回itemDate>variableDate;
})
);
})
.catch(函数(错误){
console.log(错误);
});
return()=>{
isMounted=错误;
}
},[statusContext]);
useffect(async()=>{
不要这样做。这样
useffect
中的函数将返回
Promise
,而不是React所期望的另一个函数。你甚至不需要它,因为你已经链接到
。然后
/
。捕获
。一旦你删除
async
“数据泄漏”怎么办看起来像?控制台中有错误吗?