
Learn how React, a declarative, component-based JavaScript library for building user interfaces, fits into a broader ecosystem with a beginner-friendly path.
Set up your development environment with node and a text editor, then create a React app with create react app and run it on localhost:3000. Explore npx and npm approaches.
Explore the act component-based architecture in react and see how header, nav, main, and footer create a reusable, root-containing UI with stateless functional and stateful class components.
Explore functional components as JavaScript functions that receive props and return ui, then export, import, and render them in a React app.
Explore class components in React, including props and internal state, compare to functional components, and learn about stateful, presentational, and life-cycle hooks for building interactive UI.
Explore the hooks update in React, introducing state and lifecycle capabilities in functional components while preserving backwards compatibility with class components, all while remaining opt-in in alpha 16.7.
Discover how JSX extends JavaScript with XML-like syntax to write elements and components that translate to React.createElement, and learn about className and camel casing.
Explore how props create reusable React components by passing names and data, maintain props immutability, access props in functional and class components, and render dynamic content with props.children.
Compare props and state, understand state in class components, and see how a subscribe button updates the message using this.setState to switch from 'welcome visitor' to 'thank you for subscribing'.
Learn how to use React state and setState in a class component, increment a counter, avoid direct state mutation, and handle asynchronous updates with a callback and functional updates.
Master destructuring props and state in React for both functional and class components, with two approaches: in the function parameter and inside the function body.
Handle user events in React by wiring onClick handlers in functional and class components. Use camelCase event names and pass function references without parentheses.
Learn how to bind event handlers in React class components, comparing four approaches: bind in render, arrow functions in render, bind in constructor, and class property arrows, with setState updates.
Explore how a parent component passes a method as a prop to a child, enabling the child to trigger the parent's function and even send parameters with arrow functions.
Explains four React conditional rendering approaches—element variables, ternary operator, and short-circuit—and shows how to render greetings based on the is logged in state with code examples.
Learn list rendering in react by using the map method to render arrays, pass data via props to a dedicated person component, and understand keys for list items.
Assign a unique key to each item when rendering lists in React, using item ids or other unique values. Keys help React track changes and update the UI efficiently.
Learn why using the index as a key in React lists is an anti-pattern and should be avoided unless the list is static and items have no unique IDs.
Explore styling React components using regular stylesheets, inline styles, and CSS modules. Apply conditional class names, template literals, and consider style components for library-based styling.
Explore basics of handling forms in React by creating controlled components for input, textarea, and select, using state and onChange to capture data for submission.
Explore the lifecycle of a class component in React, from mounting to error handling, and learn the exact lifecycle methods like constructor, render, componentDidMount, componentWillUnmount, and componentDidUpdate.
Explore the mounting lifecycle in React, including constructor, getDerivedStateFromProps, render, and componentDidMount, and learn their execution order and rules for side effects with props and state.
Explore the updating lifecycle methods in React, including getDerivedStateFromProps, shouldComponentUpdate, render, getSnapshotBeforeUpdate, and componentDidUpdate, and learn their order and usage.
Learn how React fragments group multiple elements without extra nodes, using React.Fragment or the shorthand <>, and how keys can be used when rendering lists.
Explore pure components in React, compare them with regular components, and learn how shouldComponentUpdate uses a shallow prop and state comparison to boost performance.
Explore how react.memo lets functional components avoid unnecessary re-renders, mirroring pure components for class-based components and highlighting its higher-order role and 16.6+ compatibility.
Explore refs in React to access dom nodes directly, focusing input fields on load and retrieving values using both createRef and callback refs in a login form.
Attach refs to a text input and a class component using React createRef, enabling the parent to focus the child input. Refs cannot be attached to functional components.
Learn how forwarding refs enables a parent component to access a child's native input element, using React forwardRef to pass refs and trigger focus.
learn how react portals render children into a dom node outside the root, using createPortal to mount to a portal root for modals, tooltips, and popups.
Learn how to implement error boundaries in react by creating a class component that uses getDerivedFromError and componentDidCatch to render a fallback UI and log errors.
Explore higher order components in React by building reusable counters—click, hover, and key-press counters—while learning why lifting state and avoiding code duplication matter for code reuse.
Explore higher order components (HOC) in React, a pattern where a function takes a component and returns an enhanced component that adds shared state and functionality without duplication.
Explore higher order components and fix prop forwarding with spread operator so wrapped components receive props. Learn passing parameters to HOC to customize behavior and share functionality across libraries.
Explore the render props pattern as a code-sharing approach in React components, alongside higher order components, and see how to implement reusable counter logic across clicks, hovers, and inputs.
Learn how the render props pattern shares code between components by using a prop whose value is a function, with counter examples and the optional children variation.
Explore the context API to solve prop drilling by passing data through the component tree without manually threading props, enabling direct access to values like user data across nested components.
Demonstrates how to implement a user context to pass a user name from the app component to a deeply nested component using create context, provider, and consumer.
Discover how to set a default value for the React context API and use the provider. Compare context type for class components with the consumer for reading multiple contexts.
Learn how React handles HTTP requests, why the library itself doesn't fetch data, and how to use Axios to perform GET and POST calls from a React app.
Learn to perform a get request with axios to fetch posts from JSON placeholder and render the data in a React component during componentDidMount, with state handling and error logging.
Learn how to post data to an API from a React app by building a post form with user ID, title, and body, managing state, and submitting via axios.
Learn what React hooks are, why they were introduced in React 16.8, and how they let you use state and other features without classes, enabling reusable, organized logic.
Explore how the useState hook enables state in functional components, contrasting class components with a counter example and showing initialization, updating, and rendering of state.
Explore updating React state with useState based on the previous value, using a counter with increment, decrement, and reset. Learn the safer functional updater over direct state changes.
Demonstrate using useState with an object to store first and last names via two inputs, explain why setters don’t auto-merge, and show merging with the spread operator.
Learn how to manage an array in React with useState: create a counter that adds items (id and value) using the spread operator, map items, and explain state updates.
Explore how the useEffect hook replaces lifecycle methods to handle side effects in functional components, like updating the document title and timers.
Demonstrate how the use effect hook mimics component did mount and did update in functional components by updating the document title after each render.
Learn to conditionally run React effects by comparing previous and current state and updating the document title only when count changes using useEffect with a dependency array.
Learn to run a React effect only once by using useEffect with an empty dependency array, mimicking componentDidMount, while tracking mouse position with X and Y state.
Learn how to implement cleanup with the useEffect hook by unmounting a component, removing event listeners, and preventing memory leaks through a returned cleanup function.
Explore how to implement interval-based counters using useEffect in React, compare class components with hooks, and correctly manage the dependency list and cleanup to avoid common pitfalls.
Learn to fetch data from an API using React useEffect and axios, render posts from JSONPlaceholder, manage state with useState, and prevent multiple fetches with an empty dependency array.
Fetch a single post by id with useEffect, appending the id to the endpoint and rendering the post title, using a controlled input for the post id.
Trigger the useEffect on a button click by updating a post id state from the input value, so data fetch occurs on button click rather than on change.
Learn how the use context hook solves prop drilling by sharing data like the user name and language preference across nested components, introducing the context API and its benefits.
Explore how to pass data through components with the React context API, compare render props to use context, and manage multiple contexts with providers and consumers.
Apply the use context hook to consume context values by importing use context and two contexts, then call use context with the contexts and render user and channel.
Explore the useReducer hook as a state management tool in React, learn how the reducer function uses current state and action to produce a new state and dispatch updates.
Explore useReducer with a simple counter, defining an initial state and a reducer to manage increment, decrement, and reset actions via dispatch, and compare with the state hook.
Demonstrate using useReducer with state and action objects, converting to a state object (first counter) and action object (type and value) to support multiple counters and merged updates.
Showcases using multiple useReducer hooks for independent counters with identical state transitions, reusing a single reducer function to avoid merging complex state and code duplication.
Learn how to implement a global counter with useReducer and useContext to share state across deeply nested components. Provide and consume the counter context to avoid prop drilling.
Fetch data from an api using useReducer alongside useState and useEffect, showing loading indicators, error handling, and displaying a post from a json placeholder endpoint using axios.
Learn to fetch data in React using useReducer and useEffect, replacing useState, by wiring an axios call, a reducer with fetch_success and fetch_error, and dispatching actions.
Learn when to use the state hook versus the reducer in React, based on state type, number of transitions, related updates, and local versus global state management.
learn how useCallback memoizes callbacks to prevent unnecessary re-renders and optimize performance, with examples of age and salary updates and memoized props through React.memo.
Explore the useMemo hook for performance optimization by caching expensive calculations. Learn through a counter example where is even/odd is computed with caching, compare useMemo with useCallback and understand dependencies.
Learn to use the useRef hook to access a DOM node in a functional component and focus a text input on page load with useEffect and a ref.
Explore how the useRef hook stores a mutable interval reference to manage a timer in both class and functional components, with cleanup and a timer clear example.
Learn to create custom hooks in React by extracting component logic into functions that start with use, and share logic across components as a simpler alternative to render props.
Create a simple first-name and last-name form, convert inputs to controlled components, and implement a reusable useInput hook that returns value, bind props, and reset.
Explore Redux as a predictable state container for JavaScript apps, how it complements React, and why React-Redux binds the two for scalable state management.
Begin by setting up a Redux project: install node and npm, create a Redacts Demo folder, initialize package.json, install Redux, create index.js, and run node index to see the log.
Explore how Redux uses a store, actions, and reducers, the three core concepts, to manage application state, illustrated by a cake shop scenario.
Learn how Redux enforces a single store, action-driven state changes, and pure reducers to manage app state, illustrated with a cake shop example.
Implement Redux actions by defining a strict action type constant, creating action objects with a type property, and building an action creator to return actions within a Redux flow.
Explore reducers as pure functions that take state and action to return the next state, initialize with an initial state (10 cakes), and update using the spread operator.
Learn how a Redux store holds the application state, including the initial state, exposes getState and dispatch, and uses reducers and actions to update state, with subscribe and unsubscribe listeners.
Demonstrate scalable state management using separate shopkeepers for cakes and ice creams, illustrating how redux concepts help track items on shelves and in freezers.
learn how to create multiple reducers to manage cakes and ice creams, with separate cake and ice cream reducers and initial states, and the challenge of wiring them to redux
Combine reducers in Redux to manage multiple state slices with a root reducer, mapping keys like cake and ice cream, and creating a store with the combined reducer.
Explore how to extend Redux with middleware by adding a logger to your store, applying middleware, and logging actions, state, and errors for asynchronous actions in Redux.
Explores asynchronous actions in redux by fetching users from an API, managing loading, data, and error in state, defining actions and a reducer, and creating the redux store.
Learn to create async action creators using redux-thunk and axios to perform API calls, dispatching request, success, and failure actions to update loading state and user data.
Set up a React with redux workflow, install redux and react-redux, and implement a cake counter app where the UI subscribes to the store, dispatches actions, and updates state.
Create a Redux folder, organize by feature, define action creators that return action objects, use constants for action types, and export for components.
Define a redux reducer with initial state of 10 cakes, handle the cake action to decrement cakes, return current state by default, and export the reducer.
Create a redux store with a reducer using createStore, export it, and provide it to a React app via Provider so components can dispatch actions and subscribe to state changes.
Connect a React component to a Redux store by mapping state and dispatch to props. Use mapStateToProps, mapDispatchToProps, and the connect function to wire state and actions.
Explore how React Redux hooks provide function components with store subscription and action dispatch without connect, as hooks replace the connect higher-order component in Redux apps.
Learn how to use the useSelector hook from react-redux to access state.number of cakes via a selector function, and render it in the cakes container.
Learn how to use the useDispatch hook to dispatch actions in React Redux, import the hook, and wire a button click with an action creator.
Extend a React Redux app by adding ice cream types, actions, and a reducer, and connect an ice cream container to track the number of ice creams alongside cakes.
Learn to add Redux logger middleware in a React Redux app, install the package, import logger, apply middleware, and view action and state logs in the browser console.
Explore the Redux devtools extension and learn how to install it in Chrome, integrate it with a Redux store, and use its panel to inspect state, actions, and time-travel debugging.
Learn to add an action payload to pass the number of cakes to buy. Update the action creator and reducer, wire an input with useState, and dispatch.
Use mapStateToProps to access Redux state and own props, then conditionally render cakes or ice creams in an item container, based on passed props.
Learn mapDispatchToProps in React and Redux by using ownProps as the second parameter to conditionally dispatch cake or ice cream, and expose a byItem prop via connect.
Learn to implement asynchronous actions in React and Redux by fetching a user list from an API, managing loading, data, and error state, and dispatching fetch users actions.
Learn to fetch data from an API using axios and redux-thunk, install middleware, create an async action creator, and render the user list in a React Redux app.
Vishwas introduces the practical React series, outlining its goal to go beyond fundamentals and explore real-world needs like icons, a model, a tooltip, and a table using npm packages.
Learn to use icons in React apps with React Icons package, including installing, selecting Font Awesome or Material Design icons, and using the icon context provider for color and size.
Explore toast notifications using react-toastify, install the library, import toast, and render alerts with configurable positions, types, and auto close. Customize with a custom component, close controls, and event hooks.
Implement a basic React modal with the react-modal package, control its open state with useState, and close via button, overlay, or escape, plus accessibility and inline styling tips.
Explore how to add tooltips in React using the Tippee library, implement basic and advanced content with strings, elements, or components, and control arrow, delay, and placement.
Learn to animate numbers in a React Countdown library, counting from zero to a target using duration, start value, prefix or suffix, and decimals, via a hook.
Explore implementing a session timeout with the react idle timer in a react app, triggering a five-second idle warning and a modal prompt to log out or stay active.
Learn to add a color picker with the react color package and the chrome picker, manage color state with useState, bind hex values, and toggle visibility with a button.
Explore using the react-credit-cards library to build an interactive credit card form with animated card visualization that updates as users enter number, name, expiry, and CVC, including card type detection.
Learn to implement a cross-browser date picker with the react date picture library, wiring it as a controlled component and configuring date format, min date, max date, and filter date.
Learn to build markdown-based presentations in React with the MDX deck package, defining slides in an MDX file and enhancing decks with components, themes, headers, and interactive steps.
Explore how to integrate a versatile video player component using React Player in a Create React App project, supporting YouTube, Twitch, Dailymotion, Vimeo, and configurable controls.
Learn to implement loading indicators in a React app using the React spinners package, exploring three variants with configurable size and color, and adding spacing with emotion.
Learn to add charts to a react app with the react-charges-to library by building line, bar, and doughnut charts using data, datasets, colors, and options including title and y-axis scales.
Discover how Formic streamlines managing form state, submission, and validation and error messages in React and React Native, build scalable, reusable form controls, and create a production-ready user registration form.
Build and manage a simple YouTube form in a React app, capturing name, email, and channel name, handling submission and basic validation messages.
Learn to install formic, import the useFormic hook, and use its returned object to manage form state, handle submission, and perform validations, laying the groundwork for formic's abstractions.
Learn how formic manages form state in React by tracking name, email, and channel with an initial values object, on change handlers, and real-time value updates.
Learn to manage form state with formic by setting initial values, handling onSubmit with formic.handleSubmit, accessing values in the submit callback, and using a submit button to avoid warnings.
Learn to implement form validation with Formic by enforcing required fields for three inputs and validating the email format, building toward a simple YouTube form submission.
Learn to add a validate function assigned to the form's validate property, enforcing required fields name, email, and channel and validating email format, returning an errors object with matching keys.
Learn to display validation error messages in a React form using formic, access the errors object, and conditionally render errors for name, email, and channel fields.
Use the touched object to track visited fields and rely on the unblurred prop to show errors only after a field has been visited, improving user experience.
Improve validation UX by using Formik's touched object to display errors only after a field is visited, rendering messages conditionally on blur.
Explore Yup validation by building a schema object for name, email, and channel, then apply it to form handling to enforce required fields and email format.
Discover how to reduce boilerplate in React forms by introducing a getFieldProps helper that auto-provides field props, replacing repetitive code for multiple fields and validating with a schema.
Refactor your form with the Formik component to replace useFormik, wrapping the form and passing initial values, validation schema, and onSubmit to access Formik context for Field and ErrorMessage.
Explore refactoring with the form component from formic to streamline form handling; import form, replace the email form element, remove onSubmit, and rely on the component’s automatic form submission linkage.
Discover how the field component in Formic simplifies forms by wiring inputs to the top-level form, using the name attribute to bind to state, and rendering a default input.
Refactor a YouTube form using Formic's error message component to render field errors after a field has been visited, reducing boilerplate and improving readability.
Learn to build and validate React forms with Formic, using initial values, change handlers, and on submit. Explore validation options, including the validate function and the validation schema.
Explore the field component in formic, showing prop pass-through to inputs and rendering a text area with the as prop while introducing render props for address-like custom fields.
Revisit how the error message component renders field errors in React, using the component prop, custom components, and render props to display messages in red.
Group related fields into a nested social object by adding a social property in initial values with Facebook and Twitter, then name fields as social.facebook and social.twitter.
Store primary and secondary phone numbers as an array under one label to manage React form state. Learn initial values, array indexing, and submission with Formik.
Learn to build dynamic phone number fields with the field array component: initialize with one empty string, render indexed fields, and add or remove entries using push and remove.
Explore the fast field component in Formik as a performance-oriented alternative to Field for forms with many fields or complex validations. It renders only when its own control changes.
discover when formic runs validation, on change, on blur, and on submit, and how the errors object populates; control behavior with validateOnChange and validateOnBlur (defaults true).
Demonstrate field level validation by creating a field-specific validate function for comments, wiring it to the field via the validate prop, and displaying errors on change and blur.
Master manual form validation with formic by using render props to access helpers, triggering validate field and validate form, and applying set field touched for targeted errors.
This lecture explains how to disable the submit button in a form using form state validity, covering isValid, validate on mount, and dirty to control when the button is enabled.
Learn to disable the submit button while the form is submitting in the background using formic isSubmitting, and call onSubmitProps.setSubmitting(false) to re-enable after the API response.
Load saved data into a Formik form by using a saved values object, a button to populate the form values, and enable reinitialize prop.
Learn two ways to reset form data: a reset button of type reset, and after submission using onSubmit with resetForm to clear values and prepare for another entry.
Build reusable form controls with Formik in React, including input, textarea, select, radio, and checkboxes, via a Formik container for registration, login, and course enrollment forms.
Create the FormikControl component as a functional unit and render form fields via a switch on the control prop, preparing six controls and an input for the first case.
Create a reusable input formic control by building an input component with a label, field, and red error message, wired through a formic container with yup validation and initial values.
Build a text area form control using formic, wiring a label, name, and error message. Apply the three-step flow—text area component, control, and container—and test with values and validation.
Build a reusable select formic control with a label, name, and options, including error handling, then integrate it into the form container and test in the browser.
Create a reusable radio buttons group in React with the render props pattern, formic's field and error components, and an options prop to render and validate choices.
Build a reusable checkbox group in React with Formik, enabling multi-select via an options array, labeled fields, and array-based validation, following the radio button pattern.
learn to build a date picker form control in React by integrating Formik with a date picker library, using render props and setFieldValue to manage birth date and validation.
Create a simple login form with reusable form controls using formik and yup, validating email format and required password. Observe submission and console logging of values.
Build a five-field registration form with email, password, confirm password, mode of contact, and phone number, with email format, password-match, and conditional phone validation.
Create a course enrollment form with five inputs: email, bio, course dropdown, skill set checkbox group, and date picker. Validate required fields and email format; log values on submit.
Wire up a UI component library with Formic to build a simple input form control and wrap the app with Chakra provider using the imported theme.
Create a reusable Chakra UI input component wired with a form control, label, input, and error message using render props for validation in a login form.
This wrap-up reviews building and validating forms in React with Formik, including reusable controls for input, textarea, select, radios, checkboxes, and a date picker.
Explore the React Remender Tutorial series, a one-stop channel for all things React. Learn rendering behavior, optimizations, and patterns from fundamentals to advanced topics, including hooks and function components.
Learn how React renders the user interface in two phases: render phase creates elements via createElement and builds the virtual DOM, then the commit phase updates the DOM through reconciliation.
Learn how useState drives component renders in React, including the initial render, strict mode double-invocation, and how setting state to the same value may bail out after the initial render.
Demonstrate useReducer through a counter with increment, decrement, and reset actions, and show how dispatch triggers renders and how same-value updates can bail out subsequent renders.
Learn how state immutability guides rendering in React by avoiding direct mutations and using copies or spreads to trigger user interface updates.
Explore how React renders parent and child components, including how state changes trigger re-renders, and learn about unnecessary renders and optimization techniques.
Discover how a parent component's render can trigger child renders, and avoid unnecessary renders by passing the child as a prop.
Explore how React.memo reduces unnecessary renders in a parent–child setup by memoizing the child, performing a shallow props comparison, and optionally supplying a custom comparison function for performance gains.
Learn when to use the same element reference technique versus React.memo, how state and props drive renders, and why memoizing every component can hurt performance.
Explore how React memo optimizes rendering and why passing children as props can break memoization, with examples showing when to avoid memoizing components that receive children.
Demonstrates an incorrect use of react memo on an impure component with time-based data, where time may fail to update with prop changes.
Explore why wrapping a child in React.memo fails when the parent passes changing object or function props. Learn the key takeaway that object or function references break memoization.
Learn how useMemo and useCallback prevent unnecessary child component re-renders by memoizing objects and functions, improving rendering performance in React components.
Explore how the context API affects rendering in a React component tree, including how provider value changes trigger renders, and how context helps avoid props drilling yet may impact performance.
Explore how wrapping context provider children with react memo optimizes rendering. Only the component consuming the context value re-renders, as memo prevents siblings from rendering.
Learn how to optimize context rendering in React using the same element reference technique, wrapping children with the context provider and using React.memo to minimize unnecessary re-renders.
Start from 0 and learn everything to do with React and its ecosystem. This course will be an ever growing course as the react ecosystem is continously evolving. All updates aer of course availabl for free
Content and Overview
Specifically for beginners, this course contains all the fundamentals and advanced topics you need to know, in one place, simplified and straight forward!
If you're looking for a React develoepr job or planning on enhancing your React knowledge, this course will hit you with the utmost clarity on why React code is written the way it is.
We will start with the fundamentals and move on to the advanced topics, and hooks. We then dive into the React ecosystem starting with Redux and move on to working with Forms using Formik. Later on, explore some of the popular packages you tend to use in a React app. Focus on performance optimization and more.