React学习笔记(3)--Hooks和函数

Hooks-函数

对于函数式组件,通过Hooks来实现类似于类组件的状态(State)变量的作用。最常用的是const [A,setA] = useState(default)。对于Hooks中的变量A,当其发生变化的时候,会触发其所在函数重新执行一遍。此时,会把变量A的最新的值代入进去,然后重新执行函数。也就是说,函数重新执行的时候,是不会将default的值重新赋值给变量A的。

与类组件不同的是,类组件的状态变量通过setState修改后,会出发render中的代码重新执行。而函数式组件会重新执行函数,包括return语句以外的所有代码都会重新执行。所以,一般不要在函数中调用setA方法,因为调用setA方法后,函数重新执行,然后又会调用setA方法,如此会导致函数一直被执行,耗费内存,尤其是函数中涉及到网络请求的时候,会一直发送网络请求。

如果需要调用setA方法,一般是和button绑定,点击button才会执行setA,这样即便函数重新执行了,只要我们不点击button,就不会再次调用setA方法,陷入死循环。

如果需要在函数中初始化A的值,而这个A的值又不方便通过useState后面的括号来赋值的话,那么可以调用useEffect。这是一个初始化的函数,将setA方法包含在useEffect中,并将A变量绑定到useEffect,这样只有当A变量发生变化了,才会调用useEffect函数。如果不绑定,给一个空变量,那么useState函数只会在函数初始化的时候运行一次,后续都不会再运行了。

useCallback会让内存记住这个函数中的代码,当setA方法调用以后,整个函数重新执行的时候,不会将useCallback内封装的代码重新加载一遍。useMemo和useCallback类似,useMemo返回的是一个函数执行后的结果。

Subscribe to JamesTsao的个人成长笔记
Receive the latest updates directly to your inbox.
Nft graphic
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from JamesTsao的个人成长笔记

Skeleton

Skeleton

Skeleton