Pass a Callback as Props
Problem Explanation
- Add the
GetInput
component to the render method in MyApp, then pass it a prop calledinpu
t assigned toinputValue
from MyApp’s state. Also create a prop calledhandleChange
and pass the input handlerhandleChange
to it. - Add
RenderInput
to the render method in MyApp, then create a prop calledinput
and pass theinputValue
from state to it.
Hints
Hint 1
state
is a property of Myapp
class, so use ‘this.state’ to get the object value
Hint 2
To learn more about state and props, read State and Lifecycle and Components and Props.
Solutions
Solution 1 (Click to Show/Hide)
class MyApp extends React.Component {
constructor(props) {
super(props);
this.state = {
inputValue: ''
}
this.handleChange = this.handleChange.bind(this);
}
handleChange(event) {
this.setState({
inputValue: event.target.value
});
}
render() {
return (
<div>
<GetInput
input={this.state.inputValue}
handleChange={this.handleChange}/>
<RenderInput
input={this.state.inputValue}/>
</div>
);
}
};
class GetInput extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div>
<h3>Get Input:</h3>
<input
value={this.props.input}
onChange={this.props.handleChange}/>
</div>
);
}
};
class RenderInput extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div>
<h3>Input Render:</h3>
<p>{this.props.input}</p>
</div>
);
}
};