【发布时间】:2021-03-24 22:03:05
【问题描述】:
我有以下代码
const Companies = () => {
const [company, setCompany] = useState(plainCompanyObj);
const [companiesData, setCompaniesData] = useState([]);
useEffect(() => {
Call<any, any>({
url:
_baseApiUrl +
"-------api goes here --------",
method: "GET",
data: null,
success: (companies) => {
setCompaniesData(companies.companies);
},
authorization: sessionStorage.getItem("accessToken"),
});
}, []);
return (
//return JSX
);
};
我收到以下错误:Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.
还只是为了澄清Call 标记是由axios 导入的方法,我用于URL 错误处理程序等。错误提示的问题在useEffect 部分。
【问题讨论】:
-
你什么时候收到这个错误信息?
-
@NemanjaLazarevic 我的项目中只有一个 useEffect 所以应该是它
-
您可以在渲染
<Companies />组件的位置发布代码。也许在那里,你有一些逻辑会过早地卸载你的<Companies />组件。 -
@NemanjaLazarevic 还有另一个名为 LayoutCompanies 的组件从 MatUI 返回一个 Box。
<Box> <Companies /> </Box> -
显然,您不希望该组件卸载(错误提示)。要确认是这种情况,您可以在
useEffect的底部添加return () => {console.log("Component Unmounded")}。如果刷新后你看到这个日志,意味着你必须在组件树的某个地方搜索罪魁祸首。
标签: javascript jquery reactjs react-native use-effect