React.useImperativeHandle (通过ref暴露子组件中的方法)

2023-12-27 11:32:48
/**
 * 通过ref暴露子组件中的方法
 */

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

const Input = forwardRef((props, ref) => {
    const inputRef = useRef(null);

    const handleClick = () => {
        inputRef.current.focus();
    }

    // 把聚焦方法暴露出去
    useImperativeHandle(ref, () => {
        return {
            handleClick
        }
    })


    return (
        <input ref={inputRef} />
    )
})

function Layout() {
    const sonRef = useRef(null);

    const handleFocus = () => {
        console.log(sonRef.current);
        sonRef.current.handleClick();
    }

    return (
        <div>
            <Input ref={sonRef} />
            <button onClick={handleFocus}>focus</button>
        </div >
    )
}

export default Layout;

文章来源:https://blog.csdn.net/weixin_50236973/article/details/135239741
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。