by Sai gowtham

How to call parent component method from child component in React

In this tutorial, we are going to learn about how to call a parent component method from the child component in React.

Consider, we have two new components Parent, Child and we need to call Parent component method changeName() from the Child component.

Parent Component

Parent.js
import React, { Component } from 'react';
import Child from './Child';
class Parent extends Component {

  state = {
    name: "Gowtham"
  }

  changeName = ()=>{    this.setState({      name: "James"    })  }
  render() {
    return (
      <div>
         <Child name={this.state.name}/>      </div>
    );
  }
}
export default Parent;

Child Component

Child.js
import React from 'react';

function Child(props){
  const {name} = props;

  return (
      <div>
        <h1>Hello {name}</h1>
        <button>Change Name</button>
      </div>
  )
}

export default Child;

Calling parent component method

To call a parent component method from the child component, we need to pass the changeName() method as a prop to the child component and access it as a props data inside the child component.

Parent.js
import React, { Component } from 'react';
import Child from './Child';

class Parent extends Component {

  state = {
    name: "Gowtham"
  }

  changeName = ()=>{
    this.setState({
      name: "James"
    })
  }

  render() {
    return (
      <div>
         <Child name={this.state.name} changeName={this.changeName}/>      </div>
    );
  }
}
export default Parent;

In the above code, we have passed the changeName() method as a prop to the Child component.

Now, inside the Child component we can access the changeName() method from the props object.

Child.js
import React from 'react';

function Child(props){
  const {name,changeName} = props;
  return (
      <div>
        <h1>Hello {name}!</h1>
        <button onClick={changeName}>Change Name</button>      </div>
  )
}

export default Child;

If we click on a Change Name button the Parent component method changeName() is invoked and the name is changed from Gowtham to James.

Top Udemy Courses

JavaScript - The Complete Guide 2021 (Beginner + Advanced)
JavaScript - The Complete Guide 2021 (Beginner + Advanced)
64,026 students enrolled
52 hours of video content
View Course
React - The Complete Guide (incl Hooks, React Router, Redux)
React - The Complete Guide (incl Hooks, React Router, Redux)
284,472 students enrolled
40 hours of video content
View Course
Vue - The Complete Guide (w/ Router, Vuex, Composition API)
Vue - The Complete Guide (w/ Router, Vuex, Composition API)
152,857 students enrolled
48.5 hours of video content
View Course