我收到此警告消息,并且我的状态也没有更新。有人可以帮我吗?
代码如下:
componentDidMount = async () => {
this.setState({ isLoading: true });
const { state } = this.props.location;
console.log(state);
if (state && state.mesg) {
this.setState({
mesg: this.props.location.state.mesg,
mesgType: this.props.location.state.mesgType
});
const stateCopy = { ...state };
delete stateCopy.mesg;
this.props.history.replace({ state: stateCopy });
}
this.closeMesg(1000);
let pageNo = this.props.location.search.split("=");
await this.fetchProfessionsAPI(pageNo[1] || 1);
this.setState({ isLoading: false });
};
现在此消息和消息类型未更新。另外,还会出现以下错误:
index.js:1472警告:无法在服务器上执行React状态更新 未安装的组件。这是空操作,但表示内存泄漏 在您的应用程序中。要修复,请取消所有订阅并进行异步 componentWillUnmount方法中的任务。 专业(由ConnectFunction创建) 在ConnectFunction中(在HomePage.js:140上) 在组件中(由Context.Consumer创建)
还可以显示以下内容:
错误:给定操作“ FETCH_PROFESSIONS”,减速器“ professions” 返回未定义。要忽略动作,必须显式返回 以前的状态。如果您希望该减速器不具有任何价值,则可以 返回null而不是未定义。 结合使用(redux.js:463) 在p(:1:36402) 在v(:1:36684) 在:1:40069 在Object.dispatch(redux.js:212) 在e(:1:40553) 在index.js:11 在Object.dispatch(redux-saga-core.esm.js:1423) 派遣时(:1:28545) 在Object.passToRedux(Professions.js:273) 在Professions.js:96
答案 0 :(得分:0)
在卸载组件后执行状态更改时显示。
Exp如果您发送异步API调用并根据其响应更新状态,但是在API响应之前,您离开该组件(更改路线或访问另一页面),则会显示此警告。因为异步API调用会在响应被卸载后尝试更改状态。
解决方案:取消componentWillUnmount()方法中的所有异步调用。
componentWillUnmount(){
//cancel API call etc which in progress and will update state.
}