【发布时间】:2021-04-08 12:19:15
【问题描述】:
我在使用 Provider 方法更新整个应用程序状态的应用程序时遇到问题。浏览器的控制台会引发警告,因为在单击事件上使用 react-router-dom 重定向到另一个组件的反应组件也在分派一个操作,而第二个组件已经挂载。
index.js:1 警告:无法在未安装的设备上执行 React 状态更新 零件。这是一个无操作,但它表明您的内存泄漏 应用。要修复,取消所有订阅和异步任务 在 componentWillUnmount 方法中。
这是代码。主要组件是详细信息和结果,当我在浏览器中从一个切换到另一个时,会显示警告。
https://github.com/juampablotoledo/prueba-redux.git
这是我的 index.js
import React from "react";
import ReactDom from "react-dom";
import { Provider } from "react-redux";
import { BrowserRouter, Route, Redirect, Switch } from "react-router-dom";
import Results from "./components/results";
import Details from "./components/details";
import store from "./redux/store";
const Root = (
<Provider store={store}>
<BrowserRouter>
<Switch>
<Route path="/results">
<Results />
</Route>
<Route path="/details/:itemId">
<Details />
</Route>
<Redirect from="/" to="/results" />
</Switch>
</BrowserRouter>
</Provider>
);
ReactDom.render(Root, document.getElementById("root"));
我已经阅读了几篇关于取消订阅操作以防止此类问题的帖子,但我不知道 Provider 组件是否可以与 subscribe 一起使用。
【问题讨论】:
-
请在您的问题中包含Minimal, Complete, and Reproducible 代码示例。与外部资源的链接往往会随着时间的推移而衰减和变化。当前相关的代码应该包含在此处。
标签: javascript reactjs redux memory-leaks subscribe