Pass, Access & Update Parent State from Child Components in React

Pass, Access & Update Parent State from Child Components in React

In this post we will give you information about Pass, Access & Update Parent State from Child Components in React. Hear we will give you detail about Pass, Access & Update Parent State from Child Components in ReactAnd how to use it also give you demo for it if it is necessary.

in a previous tutorial, we’ve built a simple React application with a parent App component and child ContactForm component. The parent component displays an HTML table of data which gets retrieved from a PHP API backend and stored in a state variable named contacts. This is the example ContactForm child component:

classContactFormextendsReact.Component{state={name:'',email:'',country:'',city:'',job:'',}handleFormSubmit(event){event.preventDefault();letformData=newFormData();formData.append('name','email','city','country','job',this.state.job)axios({method:'post',url:'/api/contacts.php',data:formData,config:{headers:{'Content-Type':'multipart/form-data'}}}).then(function(response){//handle successconsole.log(response)}).catch(function(response){//handle errorconsole.log(response)});}render(){return(<form><label>Name</label><inputtype="text"name="name"value={}onChange={e=>this.setState({})}/><label>Email</label><inputtype="email"name="email"value={}onChange={e=>this.setState({})}/><label>Country</label><inputtype="text"name="country"value={}onChange={e=>this.setState({})}/><label>City</label><inputtype="text"name="city"value={}onChange={e=>this.setState({})}/><label>Job</label><inputtype="text"name="job"value={this.state.job}onChange={e=>this.setState({})}/><inputtype="submit"onClick={e=>this.handleFormSubmit(e)}value="Create Contact"/></form>);}}

The child component renders an HTML form and stores its internal state comprised of the values of the form fields. It also provides a handleFormSubmit() method which handles submitting the form to the backend REST API using the Axios client and the FormData structure.

This is the implementation of the parent App component:

classAppextendsReact.Component{state={contacts:[]}componentDidMount(){consturl='/api/contacts.php'axios.get(url).then(response=>>{this.setState({contacts:data})console.log(this.state.contacts)})}render(){return(<React.Fragment><h1>ContactManagement</h1><tableborder='1'width='100%'><tr><th>Name</th><th>Email</th><th>Country</th><th>City</th><th>Job</th>    </tr>{>(<tr><td>{}</td><td>{}</td><td>{}</td><td>{}</td><td>{contact.job}</td></tr>))}</table><ContactForm/></React.Fragment>);}}

The App component has a contacts state variable that will be used to hold data retrieved from a REST API with Axios.

In the componentDidMount() method we send a call to the API and use the React setState() method to update the component state with the fetched data.

The render() method returns a React fragment and displays an HTML table of contacts data and the ContactForm component.

ContactForm is a child component of App.

We create new contacts in the ContactForm component and we want the new contact to be added to the HTML table (i.e to the parent Appcontacts state) without the need to refresh the table.

This means we need to access the contacts state of the parent App component from the ContactForm child component so we can push the new contact to the contacts array in the handleFormSubmit() method of the child component when the Axios Promise is successfully resolved (i.e the contact is successfully created in the server).

How to Access the Parent Component State from The Child Component in React

We can access the state of the parent React component using various methods such as props and the context API:

Sending the Parent State as A Prop of Child Component

You can send the state of the parent component as a prop to the child component:


In the parent component you can get the passed state as follows:


Since props are immutables, you can’t update the parent state using this method.

Using a Prop Method to Handle State Update

To be able to access and update state from the child component, we can add a method that handles updating the state to the parent component and pass the method as a prop to the child component instead of the state itself.

So, let’s implement this step by step in our previous example. In the parent App component, add the following handleStateChange() method and bind it to the class:


In the handleStateChange() method we grab the contacts state variable, we push the contact passed as a parameter and we use the React setState() method to update the state.

Next, pass the method as a prop to the child component:


Next, call the handleStateChange() method in the handleFormSubmit() method of ContactForm and pass the new contact as a parameter:

handleFormSubmit(event){event.preventDefault();letformData=newFormData();formData.append('name','email','city','country','job',this.state.job)varcontact={};formData.forEach(function(value,key){contact[key]=value;});this.props.handleStateChange(contact);/* [...] */}

Use React Context API

Instead of props, you can also use the Contexts API.

Using Redux for Accessing and Updating Parent State from Child Component

If your application is more complex than this simple example, you can use a state management library like Redux and connect() both the App and ContactForm components to the contacts in Redux store. In this case, the contacts state variable needs to be part of global app state.


In this tutorial, we’ve seen how to access and update the state of a parent component from a child component.

Hope this code and post will helped you for implement Pass, Access & Update Parent State from Child Components in React. if you need any help or any feedback give it in comment section or you have good idea about this post you can give it comment section. Your comment will help us for help you more and improve us. we will give you this type of more interesting post in featured also so, For more interesting post and code Keep reading our blogs

For More Info See :: laravel And github

We're accepting well-written guest posts and this is a great opportunity to collaborate : Contact US