React 父组件如何获取子组件的ref值?

React 父组件如何获取子组件的ref值?
父组件:

const registerStepTwo = React.createClass({
    handleChange:function(){
        var confirmPassText =  this.refs.confirmPassText.value;
        console.log(confirmPassText)//子组件ref的值取不到
    },
    render(){
        return(
            <div>
                {navBar}
                <div className="list-ul">
                    <ul>
                        <ConfirmPass  ref="confirmPassText" onChange={this.props.handleChange}  />
                    </ul>
                </div>
            </div>
        )
    }
})

子组件:

   const ConfirmPass = React.createClass({
        render(){       
            return(
                <div>
                    <li>
                        <div className="registerLeft">
                        <input ref="confirmPassText" type="password"  onChange={this.handleChange}   className="loginText" />
                        </div>
                    </li>
                </div>
            )
        }
    })
    
    
    
阅读 15.6k
5 个回答

this.props.handleChange改成this.handleChange。

handleChange是你这个组件的函数,不是传进来的属性。

你的handleChange没有绑定作用域在父组件,放你在子组件执行时作用域在子组件当然取不到。

const registerStepTwo = React.createClass({
    handleChange:function(text){
        console.log(text)   //子组件的内容 让子组件自己 传过来
    },
    render(){
        return(
            <div>
                {navBar}
                <div className="list-ul">
                    <ul>
                        <ConfirmPass onChange={this.handleChange}  />       // 这个不应该是 this.props.handleChange, 而是 this.handleChange
                    </ul>
                </div>
            </div>
        )
    }
})

------ 子组件 ------

 const ConfirmPass = React.createClass({
    handleChg: function() {
        this.props.handleChange(this.refs.confirmPassText.value);
    },
    render(){       
        return(
            <div>
                <li>
                    <div className="registerLeft">
                    <input ref="confirmPassText" type="password"  onChange={this.handleChg}   className="loginText" />
                    </div>
                </li>
            </div>
        )
    }
})
新手上路,请多包涵

这里子组件应该是handleChg: function() {

    this.propsonChange(this.ref.confirmPassText.value);
},
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题
宣传栏