是什么使React.memo对于防止渲染不可靠?

tem*_*ame 5 reactjs

React.memo文档中,它说:

此方法仅作为性能优化存在。不要依靠它来“阻止”渲染,因为这可能会导致错误。

我不太明白这个警告。为什么不能依靠它?如果不一定阻止渲染,如何进行优化?

我希望他们在这里做得更深入,但是既然没有,那么有人可以详细说明吗?照原样,我根本不愿意使用它,因为此警告使它的行为看起来非常不清楚。

GPr*_*ost 5

也许,我们应该考虑一下官方文档中关于类似useMemo功能的引用:

您可以依赖 useMemo 作为性能优化,而不是语义保证。

将来,React 可能会选择“忘记”一些先前记忆的值并在下一次渲染时重新计算它们,例如为屏幕外组件释放内存。编写您的代码,使其在没有 useMemo 的情况下仍然可以工作——然后添加它以优化性能。

我相信这同样适用于钩子React.memouseCallback钩子,所以你不能 100% 依赖 React 不会“忘记”一些记忆的道具来释放一些内存。