-
-
Save sebkouba/a5ac75153ef8d8827b98 to your computer and use it in GitHub Desktop.
| /** | |
| * Basic example to pass values between parent and child components in React | |
| * Seems to be in line with this | |
| * http://stackoverflow.com/questions/24147331/react-the-right-way-to-pass-form-element-state-to-sibling-parent-elements | |
| * Now I have the state in parent and child. Is that good or bad? Why would I need it in child? | |
| * Could probably take that out | |
| * */ | |
| class Parent extends React.Component { | |
| constructor(props) { | |
| super(props); | |
| this.state = { | |
| fieldVal: "" | |
| } | |
| } | |
| onUpdate = (val) => { | |
| this.setState({ | |
| fieldVal: val | |
| }) | |
| }; | |
| render() { | |
| return ( | |
| <div> | |
| <h2>Parent</h2> | |
| Value in Parent Component State: {this.state.fieldVal} | |
| <br/> | |
| <Child onUpdate={this.onUpdate} /> | |
| <br /> | |
| <OtherChild passedVal={this.state.fieldVal} /> | |
| </div> | |
| ) | |
| } | |
| } | |
| class Child extends React.Component { | |
| constructor(props) { | |
| super(props); | |
| this.state = { | |
| fieldVal: "" | |
| } | |
| } | |
| update = (e) => { | |
| console.log(e.target.value); | |
| this.props.onUpdate(e.target.value); | |
| this.setState({fieldVal: e.target.value}); | |
| }; | |
| render() { | |
| return ( | |
| <div> | |
| <h4>Child</h4> | |
| <input | |
| type="text" | |
| placeholder="type here" | |
| onChange={this.update} | |
| value={this.state.fieldVal} | |
| /> | |
| </div> | |
| ) | |
| } | |
| } | |
| class OtherChild extends React.Component { | |
| render() { | |
| return ( | |
| <div> | |
| <h4>OtherChild</h4> | |
| Value in OtherChild Props: {this.props.passedVal} | |
| </div> | |
| ) | |
| } | |
| } | |
| React.render( | |
| <Parent />, | |
| document.getElementById('react_example') | |
| ); |
If I want to pass value from one child to another child then.
And not a single value but values of multiple inputs.
When i try this on code i got this.setState undiefined in the parent component. So when i put the following code inside parent component's constructor it works
this.onUpdate = this.onUpdate.bind(this);
Thanks a lot my friend , finally solved my problem!!
For those who are still in struggle ( It's IN REACT NATIVE ):
PARENT
func = (smh) => {
alert(smh)
}
<ChildComponent func={this.func} /> CHILD
pressHandler(smh) {
this.props.func(smh)
}
<Text onPress={() => this.pressHandler("sss")}> Click here <Text/>Thanks a lot!
Thanks! Could you please tell me that where did the code this.props.value('text') refer to ? I didn't find detail in React or React Native official website.
point => this.props.onScroll(point)
https://reactjs.org/docs/faq-functions.html
@SimonHudec, Thanks alot
That is exactly what I was looking for the whole day :) Thank you!
Excelent !!!
Works so good
how can this code working on multi input/state?
like this
this.state = {
fieldVal: ""
otherFieldVal: ""
}
I tried
onUpdate = name => (event) => {
this.setState({ [name]: event.target.value });
};
update = name => (event) => {
console.log(event.target.value);
this.props.onUpdate(event.target.value);
this.setState({ [name]: event.target.value });
};
But the display not update in real time, thanks
Thanks a lot my friend , finally solved my problem!!
For those who are still in struggle ( It's IN REACT NATIVE ):
PARENT
func = (smh) => { alert(smh) } <ChildComponent func={this.func} />CHILD
pressHandler(smh) { this.props.func(smh) } <Text onPress={() => this.pressHandler("sss")}> Click here <Text/>
Man I love you. This works
JSBin