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