我在这里有一个简单的设置:
我有一个父组件,该父组件有2个子组件。在第一个子组件中:用户更改输入的值。然后,该更改的值将是我想要从该孩子传递给父对象的道具,以便可以将其传递给与同一父组件相连的另一个孩子。
Main (parent component)___| |_Child 1 |_Child 2
当前设置的这个,请查看
从用户输入到UI更改的流程:1.在“ Child 1”中:调整一个滑块,将onChange值传递给父组件;2.将此属性(新的滑块值)传递给Parent组件,以便“ Child 2”组件可以使用它;3.然后,该道具,即valueOfUserInput(新的滑块值)将在有关样式“ Child 2”组件元素的if / else语句中使用。
我看过与我的问题相似的解决方案和教程,但是对我来说意义不大。我整天都在闲逛,穿插着开会。
任何帮助或建议将是惊人的。谢谢大家对这个React noob的耐心配合。
当您希望2个孩子交流或共享一些数据时,在React中实现此目的的方法是 提升状态 (source)。
这意味着孩子使用的状态应该居住在父母中。然后父母将状态传给孩子。
要从子项中的操作更新状态,通常的模式是从父项中传递一个函数,该函数在子项中执行该操作时会被调用。
这是一个示例,它可以满足您的要求:
class Parent extends React.Component { constructor(props) { super(props); this.state = { valueOfUserInput: '' }; } handleUserInputChange = event => { this.setState({ valueOfUserInput: event.target.value, }); }; render() { const { valueOfUserInput } = this.state; return ( <div> <Child1 valueOfUserInput={valueOfUserInput} onUserInputChange={this.handleUserInputChange} /> <Child2 valueOfUserInput={valueOfUserInput} /> </div> ); } } class Child1 extends React.Component { render() { const { valueOfUserInput, onUserInputChange } = this.props; return <input type="text" value={valueOfUserInput} onChange={onUserInputChange} />; } } class Child2 extends React.Component { render() { const { valueOfUserInput } = this.props; return ( <div> {valueOfUserInput} </div> ); } }