react 常见ts定义

214 阅读1分钟

1.事件类型该怎么定义

import { ComponentProps } from 'react'

const onClick: ComponentProps<'div'>['onClick'] = (e)=>{// e的类型被自动推导

e.//会得到代码提示

}

<div onClick={onClick}><div>

同样,我们在引入自定义组件时,也不需要单独引入它的props类型,直接使用这个泛型即可:

import { type ComponentProps } from 'react'

const onClick: ComponentProps<typeof Custom>['onClick'] = (e)=>{// e的类型被自动推导

e.//会得到代码提示

}

<Custom onClick={onClick}></Custom>

2. ref的类型该怎么定义

这种方式定义的valueRef的类型是`MutableRefObject` 可变的引用对象

除了这种方式,还有一种不可变的,对应的类型是`RefObject` 只读的引用对象 感觉这俩就是constlet一样

看一下区别

import { useRef, type `MutableRefObject`, type RefObject } form 'react'

const valueRef1: `MutableRefObject`<number> = useRef(0)

const valueRef2: RefObject<number> = useRef(0)

valueRef1.current = 1; // 正常

valueRef2.current = 1; // 报错,不能赋值: 无法分配到 "current" ,因为它是只读属性。