React ref(转发)

转发refs react当中提供了一个ref的数据(不能再无状态组件当中来进行使用因为无状态组件没有实例)
表示当前组件的真正实例的引用他会返回绑定当前属性的元素
标识组件内部的元素–方便我们查找
react给我们3中方式进行ref的使用

  1. 字符串的方式
  2. 回调函数(推荐)
    就是在dom节点上或者组件上挂在函数, 函数的入参 形参 是 dom节点那 它的效果和字符串的方式是一样的都是获取值得引用
  3. React.createRef()(react16.3新提供的一种方式)
    把值付给一个变量通过ref挂在在节点或者组件上使用ref的current属性拿到这个节点

字符串的方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>字符串的方式</title>
    <script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
    <script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
    <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
</head>
<body>
    <!--创建dom根节点一个页面中需要有一个根节点 这个节点下的内容就会被react所管理-->
    <div id="example">
    </div>
    <script type="text/babel">
        class Com extends React.Component{
            fun=()=>{
                console.log(this.refs.demoInput.value)
            }
            render() {
                return (
                    <div>
                        我是组件
                        <input type="text" ref="demoInput" placeholder="请输入"/><br/>
                        <button onClick={this.fun}>点我获取输入框中的值</button>
                    </div>
                );
            }
        }
        ReactDOM.render(<Com/>,document.getElementById("example"));
    </script>
</body>
</html>

效果图

在这里插入图片描述

回调函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>回调函数</title>
    <script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
    <script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
    <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
</head>
<body>
    <!--创建dom根节点一个页面中需要有一个根节点 这个节点下的内容就会被react所管理-->
    <div id="example">

    </div>
    <script type="text/babel">
        class Com extends React.Component{
            fun=()=>{
                console.log(this.textinput.value)
            };

            render() {
                return (
                    <div>
                        我是组件
                        <input type="text" ref={(input)=>{this.textinput=input}} placeholder="请输入"/><br/>
                        <button onClick={this.fun}>点我获取输入框中的值</button>
                    </div>
                );
            }
        }
        ReactDOM.render(<Com/>,document.getElementById("example"));
    </script>
</body>
</html>

效果图

在这里插入图片描述

React.createRef()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>createRef</title>
    <script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
    <script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
    <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
</head>
<body>
    <!--创建dom根节点一个页面中需要有一个根节点 这个节点下的内容就会被react所管理-->
    <div id="example">

    </div>
    <script type="text/babel">
        class Com extends React.Component{
            constructor(props) {
                super(props);
                this.myRef=React.createRef();
            }
            fun=()=>{
                console.log(this.myRef.current.value)
            };

            render() {
                return (
                    <div>
                        我是组件
                        <input type="text" ref={this.myRef} placeholder="请输入"/><br/>
                        <button onClick={this.fun}>点我获取输入框中的值</button>
                    </div>
                );
            }
        }
        ReactDOM.render(<Com/>,document.getElementById("example"));
    </script>
</body>
</html>

效果图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MW0309

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值