react 父组件获取子组件输入框的值

本文介绍了在React中,父组件如何通过使用`React.createRef()`方法来获取子组件输入框的值,以实现登录功能时的数据交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做登录的功能
想把输入框的都做成组件
遇到一个问题: 父组件form 怎么拿到子组件输入框的值

解决方法:

采用react新提供的
**React.createRef()**方法

具体代码:
父组件代码

import * as React from 'react';
import Pager from "../components/Pager";
import Input from "../components/Input/Input";
class Login extends React.Component{
    private myUsernameRef: React.RefObject<any>;
    private myPasswordRef: React.RefObject<any>;
    constructor(props:any) {
        super(props);
        this.myUsernameRef = React.createRef();
        this.myPasswordRef = React.createRef();
        this.login=this.login.bind(this);
    }
    componentDidMount(): void {
        console.log(this.myUsernameRef);
        console.log(this.myPasswordRef);
    }
    login(){
        console.log(this.myUsernameRef.current.value);
        console.log(this.myPasswordRef.current.value);
    }

    render(): React.ReactElement<any, string | React.JSXElementConstructor<any>> | string | number | {} | React.ReactNodeArray | React.ReactPortal | boolean | null | undefined {
        return <Pager>
               <Input title={"账号"} Mref={this.myUsernameRef}/>
               <Input title={"密码"} type={'password'}  Mref={this.myPasswordRef}/>
               <button onClick={this.login}>登录</button>
            </Pager>
    }
}
export default Login;
子组件
import * as React from 'react';
import './input.css'
interface IInput {
    title?:string
    type?:string
    Mref:React.RefObject<any>;
}
class Input extends React.Component<IInput> {
    render(): React.ReactElement<any, string | React.JSXElementConstructor<any>> | string | number | {} | React.ReactNodeArray | React.ReactPortal | boolean | null | undefined {
        return <div>
                <span>{this.props.title}</span>
                <input type={this.props.type?this.props.type:'text'} ref={this.props.Mref} className={"input"}/>
            </div>;
    }
}

export default Input;

运行结果

当点击登录时,取到子组件的值
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值