Current Working Example如何从父组件中动态添加子组件值时访问子组件值?
我创建具有不同数量的基础上,从一个选择框的用户选择输入元素的搜索形式。
我要打破这种分为三个组成部分,一个叫SearchContainer
包装,一个叫SearchSelect
选择框,以及组件中的输入称为SearchWithTwo
和SearchWithOne
只是为了举例起见。
App └─SearchContainer Form │ SearchSelect │ ... any one of the multiple search inputs (SearchWithOne, SearchWithTwo)
当用户改变选择框被装载其中包含输入的相关分量的值。该组件可以有1到10个输入。我见过的所有例子都使用ref
提到,如果我的输入没有改变,那将会很棒。
目前,我有它的工作通过使用onSubmit
处理以下为SearchContainer
handleSubmit: function(e) {
e.preventDefault();
var form = this.getDOMNode();
[].forEach.call(form.elements, function(e){
// get the values
});
// submit the values to get results.
}
然而,这并不觉得自己是正确的方式来这样做。是否有更好的推荐方法来遍历子组件并阅读它们的状态?或者我可以以某种方式让孩子进入父母状态并获得这些价值观?
在我看来,输入数据可以存储在数组中,因为它改变(根据需要在输入上使用onchange或onkeydown事件)。然后,您不需要遍历DOM元素来处理提交。 – 2015-02-23 21:03:46
@AustinMullins嗯我不确定你的意思我猜。例如,用户可能从一个输入开始,然后将其更改为5(用于其他搜索),然后将其更改回来。您是否建议仅将数组数据保留在搜索容器中并从儿童组件更改事件修改它? – Loktar 2015-02-23 21:08:00
是的。基本上,@ carb0nshel1和我所说的是,你的数据应该被包含一个数组/列表搜索条件的模型封装,并且可能还有多少条目实际上处于活动状态。 – 2015-02-23 21:10:37