3分钟掌握react hook 在typescript中的姿势
hook
结合typescript可以说是很香了。本文主要介绍hook
结合typescript 如何使用,享受ts带给我们的编辑器提示和类型约束
useState
useState
如果初始值不是null/undefined
的话,是具备类型推导能力的,根据传入的初始值推断出类型;初始值是 null/undefined
的话则需要传递类型定义才能进行约束。一般情况下,还是推荐传入类型(通过useState的第一个泛型参数)。
1 | // 这里ts可以推断 value的类型并且能对setValue函数调用进行约束 |
useContext
useContext
一般根据传入的Context的值就可以推断出返回值。不需要显示传递类型
1 | type Theme = 'light' | 'dark'; |
useEffect
useLayoutEffect
没有返回值,无需传递类型
useCallback
useMemo
useMemo
无需传递类型,根据函数的返回值就能推断出类型
useCallback
无需传递类型,根据函数的返回值就能推断出类型。但是注意函数的入参需要定义类型,不然就是推断为any了!
1 | const value = 10; |
useRef
useRef
传非空初始值的时候可以推断类型,同样也可以通过传入第一个泛型参数来定义类型,约束ref.current
的类型。
1 | const MyInput = () => { |
1 | // 自动推断出 myNumberRef.current 是number类型 |
useReducer
只需要对传入useReducer
的reducer函数的入参state
和action
进行类型约束就能够推断出来
1 | interface State { |
useImperativeHandle
useImperativeHandle
一般比较少用,一般用来选择函数组件对外暴露ref属性被调用,需要配合forwardRef
使用。
如下例子。需要定义对外暴露的接口MyInputHandles
,函数组件使用React.RefForwardingComponent
对外暴露的接口调用作为泛型参数。然后就会得到约束了
1 | // MyInputHandles 需要给父组件的useRef作为类型使用 和 RefForwardingComponent作为泛型参数传入约束 |
1 | // 父组件 |
参考:
- Post title:3分钟掌握react hook 在typescript中的姿势
- Post author:flytam
- Create time:2019-12-09 20:38:30
- Post link:https://blog.flytam.vip/3分钟掌握react hook 在typescript中的姿势.html
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.