因此,我有一个函数,从我的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 g
我有一个场景(我们称为sceneA ),在列表视图中呈现一个lot数据,所以在导航到另一个场景之后,ui变得非常缓慢和滞后,因为sceneA仍然在导航堆栈中,我试图通过调用:componentWillUnmount() in componentWillUnmount() of sceneA来解决这个问题,但是这似乎不起作用,因为在导航到另一个场景之后,componentWillUnmount()从来没有被调用过,那么在应用程序中导航时有没有办法重置以前的场景呢?
问题:
我使用的反应-光滑结合反应预加载图像(两个最新版本),以创建一个多滑块rails页面。我的想法是按类别显示我的投资组合,所以我列出了每个类别,使用react slick显示图像,并反应预加载图像来显示预加载图像,然后显示组合图像。
好消息是,只要我不调整浏览器窗口的大小,它看上去就很棒,而且完全符合我的要求。坏消息是,当我调整浏览器窗口的大小(缩小宽度)时,应用程序会完全崩溃--空白屏幕,我的控制台中有很多难看的消息,如下所示:
Uncaught TypeError: Cannot set property 'onload' of undefined
a
我在组件的超时中需要一个setState,所以我这样做了:
componentDidMount() {
this.timeouts.push(setTimeout(() => {
this.setState({ text: 2 });
}, 4000));
}
componentWillUnmount() {
this.timeouts = [];
}
但是我得到了这个错误:
Warning: setState(...): Can only update a mounted or mounting component.
This usually means you
无论是基于还是基于Class的组件,当响应卸载组件时,我需要始终拦截。
这是我的案子:
function observe(component) {
const p = component.type.prototype;
const delegate = p.componentWillUnmount || function noop() {};
if(!delegate.__decorated) {
p.componentWillUnmount = function() {
console.log('I am going to be unmounted&