Hi i just recently started learning ReactJS and been playing around the import and export functions, For example this is the structure of the app, 3 separate files the parent and 2 children; How do i export the state from InputArea to DisplayArea?
Parent Component
import React, { Component } from 'react';
import DisplayArea from './DisplayArea';
import InputArea from './InputArea';
class App extends Component {
render() {
return (
<div id="wrapper" className="App">
<DisplayArea />
<InputArea />
</div>
);
}
}
export default App;
Child 1 Component
import React, { Component } from 'react';
import InputArea from './InputArea';
class DisplayArea extends Component {
constructor(props){
super(props);
}
render() {
return (
<div className="column">
<div className="col-body">
<div id="preview">{ How to display contents here? }</div>
</div>
</div>
);
}
}
export default DisplayArea;
Child 2 Component
import React, { Component } from 'react';
class InputArea extends Component {
constructor(props){
super(props);
this.state = {
content: ''
}
this.handleChange = this.handleChange.bind(this);
}
handleChange(e){
e.preventDefault();
this.setState({
content: e.target.value
})
}
render() {
return (
<div className="column">
<div className="col-body">
<textarea id="editor" placeholder="Enter text here" onChange={this.handleChange}></textarea>
</div>
</div>
);
}
}
export default InputArea;
To move data from a component to a sibling component, the simplest way is to pass a function from the parent component as a prop (i.e. "prop function") to its child that wants to update the data.
Changes to the state also trigger a UI update. Sending state/props to another component using the onClick event: So first we store the state/props into the parent component i.e in which component where we trigger the onClick event. Then to pass the state into another component, we simply pass it as a prop.
To update the state in a parent component, you have to pass the data into the callback prop. Instead of giving the data or state into the callback prop, you can send it directly to an external method to complete a specific task. In this guide, you'll learn how to submit a component's state to an external method.
The React.js documentation says (Lifting State Up):
Often, several components need to reflect the same changing data. We recommend lifting the shared state up to their closest common ancestor...
Example:
// Parent component which contains shared state
class Parent extends Component {
constructor(props) {
super(props);
this.state = {
child1Value: 0,
child2Value: 0,
}
this.handleChild1Click = this.handleChild1Click.bind(this);
this.handleChild2Click = this.handleChild2Click.bind(this);
}
handleChild1Click(nextValue) {
this.setState({ child1Value: nextValue });
}
handleChild2Click(nextValue) {
this.setState({ child2Value: nextValue });
}
render() {
return (
<div>
<Child
value={this.state.child2Value}
onClick={this.handleChild1Click}
/>
<Child
value={this.state.child1Value}
onClick={this.handleChild2Click}
/>
</div>
)
}
}
class Child extends Component {
constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.props.onClick(this.props.value + 1);
}
render() {
return (
<div>
<p>Value of my sibling: {this.props.value}</p>
<button onClick={this.onClick}></button>
</div>
)
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With