react pass function as prop to child code example

Example 1: pass props in react

/* PASSING THE PROPS to the 'Greeting' component */
const expression = 'Happy';
<Greeting statement='Hello' expression={expression}/> // statement and expression are the props (ie. arguments) we are passing to Greeting component

/* USING THE PROPS in the child component */
class Greeting extends Component {
  render() {
    return <h1>{this.props.statement} I am feeling {this.props.expression} today!</h1>;
  }
}

Example 2: pass function with parameter as prop

class SomeComponent extends Component{

    constructor(props){
        super(props);
        //does whatever stuff        
        this.myFunction = this.myFunction.bind(this);

    }

    //(only applicable to raw and normal forms)
    myFunction(param){
        console.log('do something: ', param);
    }

    render(){
     return (<div><ChildComponent1 myFunction={this.myFunction}/></div>)
    }
}

class ChildComponent1{
      render(){
  return (<div><ChildComponent2 myFunction={this.props.myFunction}/></div>)
    }
}

class ChildComponent2{
      render(){
  return (<Button onClick={()=>this.props.myFunction(param)}>SomeButton</Button>)
    }
}

Example 3: pass params react js

//pass color from parent -> child

App.js -> ColorPicker (Components/ColorPicker.js)

/// parent App.js
import ColorPicker from './Component/ColorPicker';

class App extends Component {
  
   constructor(props) {
        super(props);
        this.state = {
            color:  'red',
        };
    }
  
   render() {
        return (
			<div className="col">
    			<ColorPicker color={ this.state.color } />     
			</div>
		)
    }
}export default App;        

/// child ColorPicker
import React, { PureComponent } from 'react';

class ColorPicker extends PureComponent {  

    constructor(props) {
        super(props);
        this.state = {
            colors: ['red', 'green', 'blue', 'yellow', 'purple'],
        };
    }

    render() {

        var elementColors = this.state.colors.map((c, index) => {
            return <span key={ index } 
                         className={ this.props.color === c ? 'active squad ml-10' : 'squad ml-10'}
                        }  // click into color c will pass params c to Bai11Practice.js
                        >
                   </span>
        });
}
export default ColorPicker;    

// ---------------------------------------

//pass params from child -> parent
// onClick => setActiveColor -> this.props.onReceiverColor(c);
ColorPicker (Components/ColorPicker.js) -> App.js 

/// child ColorPicker
import React, { PureComponent } from 'react';

class ColorPicker extends PureComponent {  

    constructor(props) {
        super(props);
        this.state = {
            colors: ['red', 'green', 'blue', 'yellow', 'purple'],
        };
    }
  
    setActiveColor = (c)  => {
        this.props.onReceiverColor(c);
    }

    render() {

        var elementColors = this.state.colors.map((c, index) => {
            return <span key={ index } 
                        onClick={ () => this.setActiveColor(c) }  // click into color c will pass params c to Bai11Practice.js
                        >
                   </span>
        });
}
export default ColorPicker;        

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

class App extends Component {

    onSetColor(c) {
        alert(c);
    }

    render() {
        return (
		        <ColorPicker onReceiverColor={ this.onSetColor } />     
        );
    }
}export default App;

Tags:

Misc Example