Hello! After writing two articles on useState and useEffect, today I want to write about Context in React. The purpose of writing these articles is to transfer the core concepts of hooks to beginners who are afraid of moving on and leave class-based components behind. Of course I’m not saying that class components aren’t good BUT would you drive an old car when you own a new S-Class Mercedes? Surely not! So this article is going to examine the benefits of Context, its usages, and different ways of implementations.

This article is the first part of my two-part series about Context. In part one we will review the basic concepts of context and a basic implementation and in the next part we’ll go straight to hooks.

Repository and Requirements

We’re going to build a very small application which shows a list of favorite football players. It contains 3 components: our Navbar, PlayerList and ThemeToggler. We’re going to use context to handle our app’s theme (Dark/Light).

“Version 1.0.0” of my “context-playground” repo in GitHub covers this article’s contents.

_Repo Links: _https://github.com/hosseinAMD/context-playground

Requirements

You should know HOCs concept and state managing in react. That’s all!

Why context

Every react application includes some data and this data should flow in the application. Our data appears in our app as props or states. Consider an application, in which you want to show your favorite football players and teams. By using useState you can save your players array in PlayerList component and map over them to render a PlayerItem component for every player. So, you have to pass player data down by props. Consider a simple components hierarchy in below image:

Components Hierarchy

Every thing looks nice! But things get messy when you want to pass some props from App.js to the TeamItem component! Yes, it’s two layers only but what if there were five layers between App.js and your component? Do you want to pass your data as a prop for five times?

Another challenge in our application is when we want to get some data from our PlayerForm component and pass it to TeamList! What should we do? React documents says:

“In a typical React application, data is passed top-down (parent to child) via props, but this can be cumbersome for certain types of props (e.g. locale preference, UI theme) that are required by many components within an application. Context provides a way to share values like these between components without having to explicitly pass a prop through every level of the tree.”

So, trust me. When you have a global variable that should be shared in your app and when you pass a prop 3 times down, consider using React Context.

#reactjs #react-hook #context #react #context-api

How to use React Context — Part 1
2.10 GEEK