参见这里:https : //reactjs.org/blog/2015/12/16/ismounted-antipattern.html 还有这里:How to cancel a fetch on componentWillUnmount这里:ismounted antipattern, track own property
在这两种情况下,他们都提到了 3 种方法:
- 在您的
promise.resolve检查中this.IsMounted(),如果`Compounted Has Unmounted,哪个React将为您正确返回 - 在您的
promise.resolve支票中_isMounted,您已在ComponentWillUnmount()方法中手动跟踪。 - 使用可取消的Promise,这样你
promise就永远不会解决。这将解决您的所有问题并使其变得可爱。
除了,在第 3 种情况下您的promise意愿error(),但也可能error()在其他情况下(例如 API 已关闭)。
因此,实际上,第三个选项归结为: - 在您的promise.errorcheck 中errorPayload.IsCancelled,您已在cancellablePromise对象中手动跟踪该对象,而该对象又由ComponentWillUnmount.
所以这三个几乎完全相同:
当您处理
promise结果时,请检查该变量的值,该变量与组件是否已经有unmounted.
为什么他们断言第三个选项比其他两个更好,而第一个选项是反模式。