Reactjs 关于未安装的Act组件更新的警告
在我开发自己的react博客的那天,我遇到了一个问题,需要你的帮助,而且我的英语很差,请原谅我的打字错误 我用React 16.x编写代码,React发出警告: 警告:只能更新已安装或正在安装的组件。这通常意味着您在未安装的组件上调用setState、replaceState或forceUpdate。这是禁止的。 请检查Post组件的代码。 Post组件在ComponentDidMount生命周期方法中使用异步请求调用getCategories()函数,然后在呈现Post组件后单击指向另一个组件的链接,它将发出警告 我已尝试添加一个标记:Reactjs 关于未安装的Act组件更新的警告,reactjs,Reactjs,在我开发自己的react博客的那天,我遇到了一个问题,需要你的帮助,而且我的英语很差,请原谅我的打字错误 我用React 16.x编写代码,React发出警告: 警告:只能更新已安装或正在安装的组件。这通常意味着您在未安装的组件上调用setState、replaceState或forceUpdate。这是禁止的。 请检查Post组件的代码。 Post组件在ComponentDidMount生命周期方法中使用异步请求调用getCategories()函数,然后在呈现Post组件后单击指向另一个组
componentDidMount() {
this._isMounted = true;
this.getCategories()
}
componentWillUnmount() {
this._isMounted = false;
}
然后在我的getCategories中:
fetch({
...API.getCategories,
data: {
include: post.categories.join(',')
}
}).then(res => {
if (res && res.data && this._isMounted) {
this.setState(prevState => ({
meta: Object.assign({}, prevState.meta, {
categories: res.data
})
}));
}
});
仍然存在警告。在组件装载后更新状态将触发第二个
render()
调用,并可能导致属性/布局抖动。您收到此警告是因为您正在componentDidMount()
有关详细信息,请阅读。在组件装载后更新状态将触发第二个
render()
调用,并可能导致属性/布局抖动。您收到此警告是因为您正在componentDidMount()
请阅读了解更多详细信息。谢谢,我已经阅读了它,但实际上我需要在这个组件中请求一些数据,它只是在这个组件中使用的。是的,但我不想按照redux的最佳实践将所有状态都放入redux中。试试这个
componentDidMount(){axios.get(api.url+“dish”)。然后((dish)=>{this.setState({dataSource:dish})console.log(dish);}).catch((err)=>{console.log(err);});}
[谢谢,但它不起作用,问题是在请求解决之前,用户链接到其他组件。我尝试向DOM添加一个ref-wrapEl,并在请求成功回调中,添加一个if
条件,只有当this.wrapEl存在时,setState才会执行,这可以。谢谢,我读过了,但实际上我需要这样请求我在这个组件中添加了数据,它只是在这个组件中使用。是的,但我不想按照redux的最佳实践将所有状态都放入redux中。试试这个componentDidMount(){axios.get(api.url+“dish”)。然后((dish)=>{this.setState({dataSource:dish})console.log(dish);})。catch((err)=>{console.log(err);}}
[谢谢,但它不起作用,问题是在请求解决之前,用户链接到其他组件。我尝试向DOM添加一个ref-wrapEl,并在请求成功回调中,添加一个if
条件,仅当this.wrapEl存在时,设置状态才会执行,这可以确定。