参见这里: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.error
check 中errorPayload.IsCancelled
,您已在cancellablePromise
对象中手动跟踪该对象,而该对象又由ComponentWillUnmount
.
所以这三个几乎完全相同:
当您处理
promise
结果时,请检查该变量的值,该变量与组件是否已经有unmounted
.
为什么他们断言第三个选项比其他两个更好,而第一个选项是反模式。