zoukankan      html  css  js  c++  java
  • [React] React Fundamentals: Using Refs to Access Components

    When you are using React components you need to be able to access specific references to individual components. This is done by defining a ref.

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>React Lesson 5: Using Refs to Access Components</title>
    </head>
    <body>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.12.2/JSXTransformer.js"></script>
    <script type="text/jsx">
    
        var React_app = React.createClass({
            getInitialState: function() {
                return {
                    red: 128,
                    green: 128,
                    blue: 128
                }
            },
            myUpdate: function(){
                this.setState({
                    red: this.refs.red.getDOMNode().value,
                    green: this.refs.green.getDOMNode().value,
                    blue: this.refs.blue.getDOMNode().value
                });
            },
            render: function() {
                return (
                     <div>
                         <Silder update={this.myUpdate} ref="red"></Silder><label>{this.state.red}</label><br/>
                         <Silder update={this.myUpdate} ref="green"></Silder><label>{this.state.green}</label><br/>
                         <Silder update={this.myUpdate} ref="blue"></Silder><label>{this.state.blue}</label><br/>
                     </div>
                );
            }
        });
    
        var Silder = React.createClass({
            render: function(){
                return (
                     <input type="range" min="0" max="255"  onChange={this.props.update}/>
                )
            }
        });
    
        React.render(<React_app />, document.body);
    </script>
    </body>
    </html>

    Here we use getDOMNode() to get the html node:

     <Silder update={this.myUpdate} ref="red"></Silder>

    then get value from it:

    this.refs.red.getDOMNode().value

    But, if we add a div:

        var Silder = React.createClass({
            render: function(){
                return (
                   <div>  <!--  added  -->
                     <input type="range" min="0" max="255"  onChange={this.props.update}/>
                   </div>  <!--  added  -->
                )
            }
        });

    We found it doesn't work. 

    The way can solve this problem is by adding another ref to the input element:

        var Silder = React.createClass({
            render: function(){
                return (
                   <div >
                     <input type="range" min="0" max="255" ref="range" onChange={this.props.update}/>
                   </div>
                )
            }
        });
            myUpdate: function(){
                this.setState({
                    red: this.refs.red.refs.range.getDOMNode().value,
                    green: this.refs.green.refs.range.getDOMNode().value,
                    blue: this.refs.blue.refs.range.getDOMNode().value
                });
            },
  • 相关阅读:
    cobbler自动安装系统(Centos7.X)
    企业级全网服务监控
    javascript中的getElementById、getElementsByName、getElementByTagName详解
    JavaScript中Math对象
    网络编程这结构体发送
    vue中'. native'修饰符的使用
    vue中render: h => h(App)的详细解释
    关于内存对齐的几点记忆
    _initialize() 与__construct()的区别
    PHP的 __DIR__ 作用
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4363099.html
Copyright © 2011-2022 走看看