• React Refs


    React 支持一种非常特殊的属性 Ref ,你可以用来绑定到 render() 输出的任何组件上。

    这个特殊的属性允许你引用 render() 返回的相应的支撑实例( backing instance )。这样就可以确保在任何时间总是拿到正确的实例。

    使用方法

    绑定一个 ref 属性到 render 的返回值上:

    <input ref="myInput" />

    在其它代码中,通过 this.refs 获取支撑实例:

    var input = this.refs.myInput;
    var inputValue = input.value;
    var inputRect = input.getBoundingClientRect();

    完整实例

    你可以通过使用 this 来获取当前 React 组件,或使用 ref 来获取组件的引用,实例如下:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8" />
        <title>refs</title>
        <script src="https://cdn.bootcss.com/react/15.4.2/react.min.js"></script>
        <script src="https://cdn.bootcss.com/react/15.4.2/react-dom.min.js"></script>
        <script src="https://cdn.bootcss.com/babel-standalone/6.22.1/babel.min.js"></script>
      </head>
      <body>
        <div id="example"></div>
        <script type="text/babel">
          // 创建 MyComponent 组件
          var MyComponent = React.createClass({
            // 按钮点击事件
            handleClick: function() {
              // 使用原生的 DOM API 获取焦点
              this.refs.myInput.focus();
            },
            // 渲染
            render: function() {
              // 当组件插入到DOM后,ref属性添加一个组件的引用于到this.refs
              return (
                <div>
                  <input type="text" ref="myInput" />
                  <input
                    type="button"
                    value="点我输入框获取焦点"
                    onClick={this.handleClick}
                  />
                </div>
              );
            }
          });
    
          // 创建虚拟DOM
          ReactDOM.render(
            <MyComponent />,
            document.getElementById('example')
          );
        </script>
      </body>
    </html>

    实例中,我们获取了输入框的支撑实例的引用,子点击按钮后输入框获取焦点。

    我们也可以使用 getDOMNode()方法获取DOM元素

    效果图:

    .

  • 相关阅读:
    今天你们表现的真棒!!!
    多久没有给家里打过电话了?
    算法>并行算法 小强斋
    设计模式>单一职责原则 小强斋
    设计模式>里氏替换原则 小强斋
    设计模式>依赖倒置原则 小强斋
    设计模式>里氏替换原则 小强斋
    设计模式>接口隔离原则 小强斋
    设计模式>接口隔离原则 小强斋
    设计模式>单一职责原则 小强斋
  • 原文地址:https://www.cnblogs.com/crazycode2/p/8452084.html
Copyright © 2020-2023  润新知