我试图在网上找到一个简洁的答案,但是没有运气。
关于useEffect
,useMemo
和useState
之间的区别,以下说法正确吗?
useState
和useMemo
都将记住渲染中的值。区别在于:useMemo
不会导致重新渲染,而useState
会导致useMemo
仅在其依赖项(如果有)更改时运行,而setSomeState
(useState
返回的第二个数组项)不具有此类依赖项数组useMemo
和useEffect
都仅在它们的依存关系更改时运行(如果有)。区别在于:useEffect
在发生渲染后运行,而useMemo
在 我错过了其他关键区别吗?
最佳答案
您的观点基本上是正确的,需要一些澄清:
useState 导致对setState方法的调用(返回的数组中的第二个元素)重新呈现。它没有诸如useMemo或useEffect之类的任何依赖项。
useMemo 仅在其依赖项数组中的元素发生更改时才重新计算一个值(如果没有依赖项,即该数组为空,则仅重新计算一次)。如果忽略该数组,它将在每次渲染时重新计算。调用该函数不会导致重新渲染。而且它在
useEffect 在每个渲染之后称为,如果其依赖项数组中的元素已更改或该数组被忽略。如果该数组为空,则它将仅在初始安装时运行一次(如果返回清除函数,则将其卸载)。
您始终可以检查Hooks API Reference,我认为这是一个非常可靠的文档