Higher-Order Components (HOC) in React
In this chapter, you will learn about what are Higher-Order Components (HOC) in React.
- The Higher-Order Components (HOC) is a function which receives the component and returns the new component
- In other words, it wraps another component.
- It does not contain any of its own logic
- It accepts the wrapped component and returns the component function.
Now we will write an example to understand HOC properly. Let’s create the following directory structure,
Step 1:
Create the file src/components/manager/Manager.js if you have it already paste the below code snippet
import React from "react"; import './Manager.css' const manager = props => { return ( <div> {props.isManagerLoggedin ? ( <div> <h2>Welcome to your dashboard</h2> {props.employee.map(item => ( <li key={item.name}> Name: {item.name}, ID: {item.empId}</li> ))} <button onClick={props.logout}>Logout</button> </div> ) : ( <div> <h2>Please login</h2> <button onClick={props.login}>Login</button> </div> )} </div> ); }; export default manager;
Step 2:
Create the file src/components/hoc/Container.js if you have it already paste the below code snippet
import React from 'react'; const container = (props) => ( <div className={props.divClassName}> {props.children} </div> ); export default container;
Step 3:
Create the file App.js if you have it already paste the below code snippet
import React, { Component } from 'react'; import './App.css'; import Manager from './components/manager/Manager'; import Container from './components/hoc/Container'; class App extends Component { constructor(props) { super(props); this.login = this.login.bind(this); this.logout = this.logout.bind(this); this.state = { isManagerLoggedin: false, employee: [ {name:'Stark', empId:'123'}, {name:'John', empId:'124'}, {name:'Mickel', empId:'125'}, {name:'Clark', empId:'126'} ] }; } componentDidMount() {} login = e => { this.setState({ isManagerLoggedin: true }); }; logout = e => { this.setState({ isManagerLoggedin: false }); }; render() { return ( <Container divClassName='App'> <h1>Welcome to react JS tutorial</h1> <Manager isManagerLoggedin={this.state.isManagerLoggedin} login={this.login} logout={this.logout} employee={this.state.employee} /> </Container> ); } } export default App;
Now look at the URL: http://localhost:3000/
You should be able to see the output
One thought on “Higher-Order Components (HOC) in React”
Comments are closed.