Post 组件上的Reactjs findDOMNode

Post 组件上的Reactjs findDOMNode,post,components,reactjs,Post,Components,Reactjs,我有一个使用另一个组件的组件 render: function(){ return( <div className={"col-md-8 col-md-offset-2"}> <form onSubmit={this.handleSubmit}> <div className="panel panel-default"> <div cl

我有一个使用另一个组件的组件

render: function(){
    return(
        <div className={"col-md-8 col-md-offset-2"}>
            <form onSubmit={this.handleSubmit}>
                <div className="panel panel-default">
                    <div className="panel-body">
                        <CustomerForm />
                    </div>
                </div>
                <button type="submit" className={"btn btn-default"} onClick={this.handleFormSubmit} value="Post">Submit</button>
            </form>
        </div>
    )
}
因为findDOMNode只在已装入的组件上工作,并且是一个子组件,所以我得到错误UncaughtTypeError:无法读取null的属性“value”


有没有好办法解决这样的问题

深入查看您的
参考资料如何

render()函数中:

<CustomerForm ref={'customerForm'} />

但是这在这个类和您的
CustomForm
类之间增加了一些非常紧密的耦合。也许更好的方法是重构?

谢谢!这就是我一直在寻找的答案。我强烈接受你关于重构的建议,你对如何进行重构有什么建议吗?问题是表单将有多个部分,例如。我认为一个好主意是将这些组件拆分为多个组件,并首先将它们装载到componentWell中,而不是抓取DOM节点并设置其值。如果值由父组件“拥有”,则应将该值作为属性传入。如果在子级内部处理的操作可以更改其值,那么它应该将该值作为
状态
拥有,并且父级可以选择提供
初始值
。如果您的组件表示表单,则它们最好呈现整个
表单
元素。。。在我看来,拥有这个父表单是个坏主意。
<CustomerForm ref={'customerForm'} />
React.findDOMNode(this.refs.customerForm.refs.firstName).value = '';