我目前在React 15.3.2中使用ref=
字符串,不推荐使用。
因此,如果我按照文档使用回调:
ref={(input) => this.textInput = input}
然后,当组件安装时,这会将 DOM元素附加到我的班级。
耶!一个DOM元素。所以现在我不必这样做:
ReactDOM.findDOMNode(this.refs.input).value=''; // uncontrolled component
我认为反应的整个想法是不接触DOM ......
让我们假设我有一个复杂的TextInput组件,并且有一个InputError组件和<input type="text"
- 这个TextInput组件根据props做了一些验证,并且它有一个状态可以帮助像显示错误。
在表单中备份,我想清除表单,因此TextInput有一个.clear()
来重置其状态。 (我已经做错了吗?)
问题是,我无法访问任何子组件 React Objects ,除非我将字符串用作ref=
,因此我无法调用clear()
。
是什么给出了?
我应该路由&#34;所有的沟通&#34;通过道具?一旦所有引用都是回调,this.refs
有什么用呢?我可以通过.children
或其他东西获取我的反应对象吗?关于这个问题的惯例是什么?
编辑:
显然我正在学习React,我想基本的问题是,对子组件上的EVER调用方法是不好(反应)?
有问题的组件可以在这里找到:
RegisterForm.jsx TextInput.jsx InputError.jsx
我通过道具找到困难/奇怪的工作要求是TextInput:&#34; onblur然后如果错误然后显示错误,则标记为错误,直到更改通过验证&#34;