React,Hooks中useImperativeHandle的使用

useImperativeHandle是react官方为了简便我们的ref操作,通常和forwardRef一起进行使用

下面来先看一个forwardRef案例,聚焦input框

import React, { useRef, forwardRef } from 'react'

const HYinput = forwardRef((props,ref) => {
  return 
})

export default function ForwardDemo() {
  const inputRef = useRef()
  return (
    
) }

当我们在父组件里面点击这个聚焦button的时候,会调用子组件里面input的聚焦

下面我们用useImperativeHandle给它改造一下

import React, { useRef, forwardRef, useImperativeHandle } from 'react'

const HYinput = forwardRef((props,ref) => {

  const inputRef = useRef() 

  useImperativeHandle(ref,()=>({
    focus : () =>{
      inputRef.current.focus()
    }
  }),[inputRef])

  return 
})

export default function UseImperativeHandle() {
  const inputRef = useRef()
  return (
    
) }

这个原理就是: 我们执行的这个focus本质是useImperativeHandle里面的focus,然后我们在子组件里面再定义一个useRef,在子组件把inputRef赋给input,相当于子组件内部先获取了这个focus,然后在父组件再调用

你可能感兴趣的:(React,Hooks中useImperativeHandle的使用)