useMemo缓存值的销毁时机:是否在组件卸载时清除?
useMemo缓存值的销毁时机解答
缓存值的销毁触发场景
- 当依赖项发生变化时:旧的缓存值会被直接丢弃,useMemo会重新计算新值并缓存新结果。
- 当组件卸载时:组件实例被销毁,与之绑定的所有useMemo缓存值会失去引用,最终被JavaScript的垃圾回收机制从内存中清除。
依赖未变时,缓存值何时被清除
只要组件处于挂载状态且依赖没有变化,缓存值会一直保留在内存中。不过React内部有极端情况下的优化逻辑——比如系统内存不足时,可能会主动清除未被频繁使用的useMemo缓存,但这种情况非常少见,开发者无需额外处理。
关于组件卸载时缓存值是否保留的疑问
这个认知是错误的。useMemo的缓存值是和组件实例绑定的,组件卸载后,整个实例都会被React回收,缓存值失去了引用,很快就会被垃圾回收机制清理出内存,不会一直留在内存里。
内容的提问来源于stack exchange,提问作者Daon
相关产品推荐
相关产品推荐

