【发布时间】:2019-08-05 05:56:24
【问题描述】:
当我注销我的流星应用程序时,出现内存泄漏错误。这似乎发生在大约 50% 的时间里,我无法弄清楚我在这里做错了什么。谁能解释一下我的方法有什么问题。
错误信息
无法对未安装的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要修复,请在 componentWillUnmount 方法中取消所有订阅和异步任务。
应用详情
Metoer、React、React-Router V4
路径:LogoutButton.jsx
class LogoutButton extends React.Component {
constructor(props) {
super(props);
this.state = {
logoutRedirect: false
};
this.handleLogout = this.handleLogout.bind(this);
}
handleLogout = e => {
e.preventDefault();
Meteor.logout(err => {
if (err) {
console.log('err', err);
} else {
this.setState({ logoutRedirect: true });
}
});
};
render() {
const logoutRedirect = this.state;
if (logoutRedirect.logoutRedirect) {
return <Redirect to="/" />;
}
return (
<button
type="button"
className="btn btn-link dropdown-item text-dark"
onClick={this.handleLogout}
>
<FontAwesomeIcon icon={faSignOutAlt} className="mr-2 text-dark" />
Logout
</button>
);
}
}
【问题讨论】: