// 用于避免异步回调后切换页面造成的内存溢出
// 定义一个方法,接收一个组件作为参数
injectUnmount = target => {
// 缓存组件的componentWillUnmount生命周期方法
let willUnmount = target.prototype.componentWillUnmount
// 重定义component原型上的componentWillUnmount方法
target.prototype.componentWillUnmount = function () {
if (willUnmount) willUnmount.call(this, …arguments)
// componentWillUnmount方法调用就创建一个boolean变量
this.unMount = true
}
// 缓存组件的setState方法,setState查看目前是否已经销毁
let setState = target.prototype.setState
// 重定义component原型上的setState方法
target.prototype.setState = function () {
console.log(this.unMount ? ‘组件不存在了,不能改’ : ‘没事,改吧’)
// 如果标识了组件被卸载,则不再修改指定状态
if (this.unMount) return
setState.call(this, …arguments)
}
return target
}
用于避免异步回调后切换页面造成的内存溢出
最新推荐文章于 2022-11-08 16:34:22 发布