Tuesday, June 4, 2024
 Popular · Latest · Hot · Upcoming
94
rated 0 times [  98] [ 4]  / answers: 1 / hits: 18220  / 7 Years ago, mon, june 26, 2017, 12:00:00

passing data from child to parent component via callback function
but somehow it's not working.
what am I doing wrong here?
passing data from child to parent component - react - via callback function



https://codepen.io/silentarrowz/pen/GEMQEP?editors=0010



and here's the code



class App extends React.Component{
constructor(props){
super(props);
this.state={
input:'this is the input for now'
}
//this.handleInput=this.handleInput.bind(this);
}

handleInput(x){
this.setState({
input:x
});
alert(this.state.input);
}

render(){
return(
<div>
<h1>Passing props from Child to Parent Component</h1>
<Child getInput={this.handleInput} />
here's the input: {this.state.input}
</div>
);
}
}

class Child extends React.Component{
constructor(){
super();
this.state={
text:''
}
}
passingProps(e){
var newInput=e.target.value;
//alert(newInput);
this.setState({
text:newInput
});
this.props.getInput(this.state.text);
}

render(){
return(
<div>
<input type=text placeholder=please input a name... onChange={this.passingProps} />

</div>

)
}
}

ReactDOM.render(
<App/>,
document.getElementById('app')
);

More From » reactjs

 Answers
4

There are a couple of issues.



1) You have to bind passingProps



constructor(){
super();
this.state={
text:''
}
this.passingProps = this.passingProps.bind(this);
}


2) this.setState is asynchronous, so it's not guaranteed that this.state.text will be set to the value you want by the time you pass it to this.props.getInput. You can either do



this.props.getInput(newInput)


or



this.setState({ text: newInput }, () => {
this.props.getInput(this.state.text);
})


to resolve that issue.


[#57302] Friday, June 23, 2017, 7 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
mckinley

Total Points: 15
Total Questions: 101
Total Answers: 94

Location: Liechtenstein
Member since Fri, Sep 11, 2020
4 Years ago
mckinley questions
Sun, Oct 17, 21, 00:00, 3 Years ago
Tue, Jun 15, 21, 00:00, 3 Years ago
Thu, Apr 8, 21, 00:00, 3 Years ago
;