React学习 Hooks的使用(二)

**

useReducer

**
useReducer是useState的替代方案,当state 逻辑较复杂且包含多个子值,或者下一个 state 依赖于之前的 state 等,useReducer 会比 useState 更适用

从useReducer的名字就可以看出,其用法了,如果熟悉 Redux 的话,就已经知道它如何工作了。但是它的作用还是与redux中的reducer有很大不同。它返回一个state和dispatch。

并且接收两个参数,一个是reducer和一个state的初始值。

reducer中包含传入的state以及action,由button中dispatch相应的action来改变state的值,这里的用法跟reducer差不多。

初始值如果是一个简单的number类型,那么在改变state的时候只需要直接修改state即可,获取state的值也是直接拿就可以,如下图所示
在这里插入图片描述

如果初始值是一个对象,那么在reducer中返回的值就要先对state进行一个拷贝,再修改counter的值,并且要通过state.counter来拿到state的值。这是个注意点。
在这里插入图片描述


**

useMemo

**

useMemo返回一个memoized 值,并且调用useMemo时接收两个参数,第一个是一个回调函数,第二个是依赖值,只有当依赖值发生改变了,才会调用回调值。这样的作法是为了优化性能。
在这里插入图片描述


**

useRef

**

定义:useRef返回一个ref对象,返回的ref对象在组件的整个生命周期中保持不变.

useRef使得我们可以在函数式组件中拿到DOM的属性,只需要在想要的DOM属性中定义一个ref,通过useRef 返回的一个 ref 对象来拿到这个DOM节点,并对其进行操纵。

在这里插入图片描述

需要注意的是,当子组件是函数式组件的时候不能用ref来获得函数式组件的DOM节点,只有类组件才可以用ref获得。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值