[英]React updating unmounted component
所以我有這個功能,可以從我的API獲取播放列表,然后更新狀態。
我的問題是,如果在API仍在提取數據的同時更改路由,即使不再安裝該組件,它也會嘗試更新該組件。 這將導致以下控制台錯誤:
Warning: Can only update a mounted or mounting component. This usually means you called setState, replaceState, or forceUpdate on an unmounted component. This is a no-op.
我想知道避免這種沖突的最佳做法是什么。
預先感謝您的回答!
async getUserPlaylists() { let data = await request({ path: '/playlists' }); data = data || []; const sanitizedPlaylists = data.map((item, index) => ({ key: index, name: item.name, imageUrl: item.imageUrl, ...item, })); this.setState({ playlists: sanitizedPlaylists, loadingPlaylists: false, submitting: false, }); return request.data; }
您可以嘗試在componentWillUnmount
終止請求,這將導致Promise無法解決:
this.request = request({ path: '/playlists' });
let data = await this.request;
componentWillUnmount() {
if (this.request) this.request.abort();
}
或者,只需設置一個標志:
componentWillUnmount() {
this.unmounted = true;
}
並在調用setState
之前檢查它:
if (this.unmounted) return;
this.setState(...)
盡管所有這些可能都是不必要的並發症。 您可以忽略開發中的警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.