zoukankan      html  css  js  c++  java
  • React技术栈-组件三大属性之refs与事件处理

              React技术栈-组件三大属性之refs与事件处理

                                          作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

    一.组件的refs属性概述

      组件内的标签都可以定义ref属性来标识自己
         <input type="text" ref={input => this.msgInput = input}/>
        回调函数在组件初始化渲染完或卸载时自动调用
    
      在组件中可以通过this.msgInput来得到对应的真实DOM元素
      作用:
        通过ref获取组件内容特定标签对象, 进行读取其相关数据

    二.refs实战案例

    1>.HTML源代码

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>组件三大属性之refs</title>
        </head>
        <body>
            <div id="box1"></div>
        </body>
        
        <script type="text/javascript" src="../js/react.development.js"></script>
        <script type="text/javascript" src="../js/react-dom.development.js"></script>
        <script type="text/javascript" src="../js/prop-types.js"></script>
        <script type="text/javascript" src="../js/babel.min.js"></script>
        
        <script type="text/babel">
            //1>.定义组件
            class MyComponent extends React.Component{
                /**
                 *     
                 *    温馨提示:
                 *        组件内置的方法中的this为组件对象
                 *        在组件类中自定义的方法中this为null
                 *            强制绑定this: 通过函数对象的bind()
                 *            箭头函数(ES6模块化编码时才能使用)
                 *
                 */
                constructor(props){
                    super(props);
                    this.showInput = this.showInput.bind(this);
                    this.handleBlur = this.handleBlur.bind(this);
                }
                
                //编写回调函数
                showInput(){
                    const input = this.refs.content;
                    alert(this.input.value);
                }
                
                /*
                 *    编写事件处理函数
                 *        通过onXxx属性指定组件的事件处理函数(注意大小写)
                 *            React使用的是自定义(合成)事件, 而不是使用的原生DOM事件
                 *            React中的事件是通过事件委托方式处理的(委托给组件最外层的元素)
                 *        通过event.target得到发生事件的DOM元素对象,下面的案例"event.target"返回的就是"input"对象。
                 *            
                 */
                handleBlur(event){
                    alert(event.target.value);
                }
    
                render(){
                    return(
                        /*
                         *     组件中只能返回一个标签,因此我们将所有的标签用div套起来返回
                         *    
                         *    下面第一个input标签的ref说明如下:
                         *        使用一个回调函数(本例中也称为箭头函数)将当前的input标签绑定到组件对象("this.input")上
                         *
                         */ 
                        <div >
                            <input type="text" ref={input => this.input = input}/>&nbsp;&nbsp;&nbsp;
                            <button onClick={this.showInput}>提示输入</button>&nbsp;&nbsp;&nbsp;
                            <input type="text" placeholder="失去焦点的提示内容" onBlur={this.handleBlur}/>
                        </div>
                    )
                }
            }
        
            //2>.渲染组件标签
            ReactDOM.render(<MyComponent />,document.getElementById("box1"))
        </script>
    </html>

    2>.浏览器打开以上代码渲染结果

    在第二个对话框输入内容,移出焦点后也会弹如下图所示的对话框。

  • 相关阅读:
    django+uwsgi+nginx实现负载均衡
    centos7 pip安装
    centos虚拟环境配置
    cenots7更换国内pip源
    FastDFS缩容
    FastDFS基于group扩容
    centos同步系统时间
    centos永久开放端口
    pip更换国内源
    Java四种访问修饰符
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/12094178.html
Copyright © 2011-2022 走看看