【工作日记】React hooks简介及常用hooks小结

今天是我去实习的第二天,也是第一次尝试正式使用react进行项目开发。项目中遇到了很多使用hooks的地方,在状态管理上起到了显著的作用。于是我今天便总结了常用的hooks,希望能分享给大家。

一、为什么要使用hooks

在介绍hooks之前,我们先介绍一下react的两种组件类型。一种是函数组件,一种是类组件。而且对于项目开发来说,组件不应成为大型的数据容器,而最好只将其构建为react单项数据流的管道。因此,最好的react组件编写方式是函数,而不是类。

不过,大多数的函数组件都是纯函数,而纯函数也存在相当多的局限性:

①纯组件没有状态

②纯组件没有声明周期钩子函数

③纯组件没有this

这也意味着,当我们需要用到状态的切换和传递时,必须要使用类组件或者redux进行状态管理,而二者都是相当繁琐的代码,很难进行拆分和重构。为了在纯组件中使用状态,我们引入了hooks。

二、hooks简介

hooks单词的本义是“钩子”,意思是组件尽量使用成纯函数,如果需要外部功能或者方法,那就用钩子将其钩进来。

三、常用hooks小结

1.useState():状态钩子

useState用于为函数组件引入状态。

const [num,setNum] = useState(1)

这句代码定义了一个num变量,设定了其初始值为1,并提供了改变其状态的serNum()方法。

<div onClick={()=>setNum(2)}></div>

2.useContext():共享状态钩子

如果一个父组件有两个子组件,现在这两个组件之间需要共享状态,就可以使用useContext。

例如:

const Context = React.creactContext()

<Context.Provider value={{username:'nuotian'}}>
    <div>
        <CompenonentA />
        <CompenonentB />
    </div>
</Context.Provider>

这样,ComponentA和ComponentB中就可以使用username了

const ComponentA = ()=>{
  const {username} = useContext(Context);
  return (<div>{username}</div>)
}

3.useReducer():action钩子

hooks中的useReducer相当于redux中的action。

const myReducer = (state,action)=>{
    if(type==='countUp'){count+=1 ;return count;}
}
function App(){
  const [state , dispatch] = useReducer(myReducer , {count : 0 });
  return (<div onClick={()=>dispatch({ type : 'countUp' })}>{{state.count}}</div>)
}

4.useEffect():副作用钩子

useEffect在组件完成挂载后执行。

useEffect有两个参数,第一个是参数是一个函数,是在函数完成挂载后执行的函数。第二个参数为一个数组,控制函数的执行。函数只有在数组中的元素发生变化后才会执行。没有第二个参数时,每次render都会执行该函数。

useEffect(()=>{alert(`${props.name}`)},[props.name])

5.useCallback():回调函数钩子

useCallback有两个参数,第一个是参数是一个函数,即执行完成返回的函数。第二个参数为一个数组,控制函数是否重新渲染。函数只有在数组中的元素发生变化后才会重新渲染。没有第二个参数时,每次render都会重新渲染。

6.useMemo():返回值钩子

useMemo和useCallback很相似,不同的是useMemo返回的是一个值,而不是函数。

useEffect(()=>{return props.name},[props.name])

7.useRef():

useRef定义了不会发生改变的变量

const num = useRef(1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值