【React】react学习笔记05-React组件对象的三大属性-引用【ref】

作用: 

获取到某个指定的dom。

用处(并不推荐过多使用):

第一:管理焦点,文本选择,媒体播放(媒体回放)

第二:触发动画

第三:集成第三方的DOM库

用法DEMO:

点击submit按钮,会将input的值打印到控制台上,但是要注意,这种方式已经过时。

<!DOCTYPE html><html>
<head>
    <meta charset="utf-8" />
    <title>React Tutorial</title>

</head>
<body>
    <!--react基础库-->
      <script src="https://cdn.bootcss.com/react/16.8.6/umd/react.development.js"></script>
    <script src="https://cdn.bootcss.com/react-dom/16.8.6/umd/react-dom.development.js"></script>
    <script src="https://cdn.bootcss.com/babel-standalone/6.26.0/babel.js"></script>

    <div id="content"></div>
   
    <script type="text/babel">
        //定义组件
        class Component extends React.Component{
            //构造函数,在初始化组件的时候会执行
              constructor(props){
                  super(props);
                  this.state={
                      name:'tom',
                      age:20
                  }
                  this.handleSubmit=this.handleSubmit.bind(this)
              }
            //出发事件获取dom以及属性的值
            handleSubmit(e) {
                // 补充:阻止事件的默认操作e.preventDefault();form组件onSubmit()常用
                // 过时的使用方法,在未来版本中可能会被移除
                let inputDom = this.refs.name;
                //控制台打印prop的值
                console.log(inputDom.value);
            }

            render() {
               // 1、给input标签添加ref属性标记
                return(
                    <form onSubmit={this.handleSubmit}>
                        <input type="text" ref="name" />
                        <button type="submit">Submit</button>
                    </form>
                );
            }
        }

        ReactDOM.render(<Component />,document.getElementById("content"));


    </script>


</body>
</html>

获取input值的两种方式:

方式一:

<!DOCTYPE html><html>
<head>
    <meta charset="utf-8" />
    <title>React Tutorial</title>

</head>
<body>
    <!--react基础库-->
      <script src="https://cdn.bootcss.com/react/16.8.6/umd/react.development.js"></script>
    <script src="https://cdn.bootcss.com/react-dom/16.8.6/umd/react-dom.development.js"></script>
    <script src="https://cdn.bootcss.com/babel-standalone/6.26.0/babel.js"></script>

    <div id="content"></div>
    <!--并不推荐过多使用-->
    <!--第一:管理焦点,文本选择,媒体播放(媒体回放)-->
    <!--第二:触发动画-->
    <!--第三:集成第三方的DOM库-->
    <script type="text/babel">
        //定义组件
        class Component extends React.Component{
            //构造函数,在初始化组件的时候会执行
              constructor(props){
                  super(props);
                  this.state={
                      name:'tom',
                      age:20
                  }
                  this.handleSubmit=this.handleSubmit.bind(this)
              }
            //出发事件获取dom以及属性的值
            handleSubmit() {
                console.log(this.inputName.value);
            }

            render() {
               // 1、给input标签添加ref属性标记
                return(
                    <div >
                        <input type="text"  ref={(input) => { this.inputName = input }} />
                        <button type="submit" onClick={this.handleSubmit}>Submit</button>
                    </div>
                );
            }
        }

        ReactDOM.render(<Component />,document.getElementById("content"));


    </script>


</body>
</html>

方式二:

export default class Search extends Component{
    constructor(props){
        super(props);
        this.state={
            currentKeyValue: ''
        }
    }
    setCurrentKeyValue= (e) => {
        const currentKeyValue = e.target.value
        this.setState({
            currentKeyValue
        })

    }
    //点击查询按钮,将值传给父组件
    search = () =>{
        this.props.setKeyWorld(this.state.currentKeyValue);
    }
    render() {
        return (
            <div>
                <input type="text" value={this.state.currentKeyValue} onChange={this.setCurrentKeyValue}/>
                <button onClick={this.search}>查询</button>
            </div>
        );
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值