Javascript 只能更新已安装或正在安装的组件

Javascript 只能更新已安装或正在安装的组件,javascript,Javascript,我得到以下警告 警告:设置状态(…):只能更新已安装或正在安装的 组成部分。这通常意味着您在未安装的服务器上调用了setState() 组成部分。这是禁止操作。请检查代码中是否有未定义的 组成部分 这是我的密码 var React = require('react'); import DetectUtil from 'pofod/detectUtil'; function withSubscription(WrappedComponent,MobileComponent) { class

我得到以下警告

警告:设置状态(…):只能更新已安装或正在安装的 组成部分。这通常意味着您在未安装的服务器上调用了setState() 组成部分。这是禁止操作。请检查代码中是否有未定义的 组成部分

这是我的密码

var React = require('react');
import DetectUtil from 'pofod/detectUtil';
function withSubscription(WrappedComponent,MobileComponent) {
    class Subscription extends React.Component{
        constructor(props){
            super(props);
            this.state={
                ExternalComponent:innerWidth>1023?WrappedComponent:MobileComponent
            }
            this.getPageLangParams=this.getPageLangParams.bind(this);
            this.MonitorSize = this.MonitorSize.bind(this);
        }
        getPageLangParams () {
            var query=this.props.location?(this.props.location.query?this.props.location.query:{}):{};
            var lang=this.props.lang||query.lang||DetectUtil.languageFamily()||'zh';
            return lang;
        }
        MonitorSize(){
            this.setState({
                ExternalComponent:innerWidth>1023?WrappedComponent:MobileComponent
            })
        }
        componentDidMount(){
            window.addEventListener('resize',this.MonitorSize)
        }
        componentWillMount(){
            window.removeEventListener('resize',this.MonitorSize)
        }
        render(){
            let lang = this.getPageLangParams();
            let ExternalComponent = this.state.ExternalComponent;
            return (
                <ExternalComponent lang={lang}/>
            )
        }
    }
    return Subscription;
}

module.exports = withSubscription;
var React=require('React');
从“pofod/DetectUtil”导入DetectUtil;
具有订阅的函数(WrappedComponent、MobileComponent){
类订阅扩展了React.Component{
建造师(道具){
超级(道具);
这个州={
ExternalComponent:innerWidth>1023?WrappedComponent:MobileComponent
}
this.getPageLangParams=this.getPageLangParams.bind(this);
this.MonitorSize=this.MonitorSize.bind(this);
}
getPageLangParams(){
var query=this.props.location?(this.props.location.query?this.props.location.query:{}):{};
var lang=this.props.lang | | | query.lang | | | | DetectUtil.languageFamily()| | zh |;
还郎;
}
监视器大小(){
这是我的国家({
ExternalComponent:innerWidth>1023?WrappedComponent:MobileComponent
})
}
componentDidMount(){
window.addEventListener('resize',this.MonitorSize)
}
组件willmount(){
window.removeEventListener('resize',this.MonitorSize)
}
render(){
设lang=this.getPageLangParams();
让ExternalComponent=this.state.ExternalComponent;
返回(
)
}
}
退订;
}
module.exports=订阅;

您混淆了componentWillMount和componentWillUnmount

EventListener正在componentWillMount上删除,但您应该在卸载前删除它,例如componentWillUnmount

因此,当卸载组件时,MonitorSize停止触发。 以下是它应该是什么样子:

componentWillUnmount(){
     window.removeEventListener('resize',this.MonitorSize)
}