如何在React中访问这些值?

问题描述:

我有这个容器组件(父)和子组件。我正在构建我的应用程序与容器组件模式(我尝试:))。如何在React中访问这些值?

所以,父母接受所有状态处理,而孩子只接受道具并基于他们显示输出。
但是,我来到这个小问题:孩子显示2个按钮(+和 - )和两个单选按钮(称他们1和2)。基于哪个无线电被检查,我需要在父母身份更新状态。

我想通过ref做到这一点,但我会保持良好的做法,并避免使用它。
我想过的其他想法是通过按钮按下(绑定到父)被调用的函数,但我看不到用子组件中传递的参数调用此函数的方法。

儿童:

<label><input type='radio' name='time'/> Work time</label> 
<label><input type='radio' name='time' /> Break time</label> 
<button onClick={this.props.valueControl} className='add'>+</button> 
<button onClick={this.props.valueControl} className='sub'>-</button> 

感谢您的帮助!

+0

使用refs有什么问题? – Pineda

+0

他们被认为是不好的做法,所以我避免使用它们 – Krizzu

,你会从你的子组件父沟通的方式是通过使用属性传递回调:

在Parent.js

... 
    someEventOccured(event) { 
    this.modifyState(); 
    } 

    render() { 
    ... 
    <child-component onSomeEvent={this.someEventOccured.bind(this)}> 
    ... 
    } 
} 
在Child.js

... 
    render() { 
    ... 
    <button onClick={this.props.onSomeEvent}></button> 
    ... 
    } 
} 

在现实生活中,您可能会将一个Child方法附加到处理该事件的onClick,并仅将数据发送回Parent,而不是整个事件。

+0

是的,但我的问题是:我如何从子组件获取值?就像,我想检查哪个单选按钮在子组件中被选中,所以我可以决定增加哪个数值。我如何在传递给孩子的函数中做到这一点? – Krizzu

+0

如果您需要访问孩子的值,这意味着您将状态存储在错误的控制器中。应通过回调影响他们的变化通知家长。如果你想查询一个孩子的状态,而这个孩子中没有发生任何事情,这意味着这个状态应该存在于父母身上。 – norbertk

+0

嘿,谢谢!我已经设法做到了,愚蠢的我:)我已经添加了一个更多的功能从父母被点击输入点击儿童。卓越的作品:) – Krizzu