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 2020 (Beginner + Advanced)
JavaScript - The Complete Guide 2020 (Beginner + Advanced)
26,545 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)
221,520 students enrolled
44 hours of video content
View Course
Vue JS 2 - The Complete Guide (incl. Vue Router & Vuex)
Vue JS 2 - The Complete Guide (incl. Vue Router & Vuex)
114,575 students enrolled
21 hours of video content
View Course