This course gets updated frequently. Here are the latest changes
This course gets updated frequently. Here are the latest changes
February 21st, 2024: Added 2.5 hours of video showing routing and data loading with React Router
February 12th, 2024: Added 1 hour of video to demonstrate integrating Typescript with React
February 5th, 2024: Added 2.25 hours of video and 5 quizzes covering the basics of Typescript
Congratulations. You've found the most popular, most complete, and most up-to-date resource online for learning React and Redux.
Thousands of other engineers have learned React and Redux, and you can too. This course uses a time-tested, battle-proven method to make sure you understand exactly how React and Redux work, and will get you a new job working as a software engineer or help you build that app you've always been dreaming about.
The difference between this course and all the others: you will understand the design patterns used by top companies to build massively popular web apps.
React is the most popular Javascript library, and the job market is still hotter than ever. Companies large and small can't hire engineers who understand React and Redux fast enough, and salaries for engineers are at an all-time high. It's a great time to learn React.
What will you build?
This course features hundreds of videos with hundreds of custom diagrams to help you understand how React and Redux work. No prior experience with either is necessary. Through tireless, patient explanations and many interesting practical examples, you'll learn the fundamentals of building dynamic and live web apps using React.
Each topic included in this course is added incrementally, to make sure that you have a solid foundation of knowledge. You'll find plenty of discussion added in to help you understand exactly when and where to use each feature of React and Redux.
Adding to your experience, the course shows modern techniques and tools, equipping you with the latest skills needed for the dynamic web development landscape. You’ll get hands-on experience with cutting-edge features like Context API for state management, TailwindCSS for styling, React Router for navigation, and Typescript to add type safety to your React apps. This holistic approach ensures not only do you learn React and Redux but also the surrounding ecosystem that makes modern web development efficient and enjoyable.
Practical projects are at the heart of this learning experience. By integrating APIs, managing app state with Redux, and using React Hooks for component lifecycle management, you’ll have the opportunity to build applications that are both complex and high-performing. These projects are designed to simulate real-world web development scenarios, preparing you for the challenges that professional developers face daily.
My guarantee to you: there is no other course online that teaches more features of React and Redux Toolkit. This is the most comprehensive resource there is.
Below is a partial list of the topics you'll find in this course:
Master the fundamental features of React, including JSX, state, and props
From square one, understand how to build reusable components
Dive into the source code of Redux to understand how it works behind the scenes
Test your knowledge and hone your skills with numerous coding exercises
Use popular styling libraries to build beautiful apps
See different methods of building UI's through composition of components
Integrate Redux Toolkit for efficient state management
Leverage React Hooks for more intuitive component logic
Manage app-wide state with the Context API for simpler global state
Style components with TailwindCSS for rapid UI development
Utilize TypeScript with React for safer and more predictable code
Implement navigation within your app with React Router
Utilize Redux with forms for consistent state updates and user experience
Learn to use portals for rendering components outside the DOM hierarchy
Develop and interact with APIs for data-driven applications
Master the implementation of data tables to handle and display large sets of data
Get to grips with Immer for writing reducers with ease
Besides just React and Redux, you'll pick up countless other tidbits of knowledge, including design techniques, popular design patterns, and repeatable steps to build new components.
This is the course I wanted to take when I first learned React: complete, up-to-date, and clear.
Dive into building a language translation app with React, starting with a straightforward project to get a taste of React development. Utilize an online code editor and a prepared template to focus on coding without setup distractions. Learn to create dynamic translation output based on user input using React state and event handlers and enhance the app with inline styling for a polished look.
Explore the foundational concepts of React by dissecting the mechanics of JSX, a syntax close to HTML, used to define UI components. This segment delves into how React displays and updates HTML content in response to user interactions and the role of components, both individually in managing portions of the interface and holistically through coordination within an application's structure.
Explore the React application startup process through an in-depth explanation of code bundling, server interactions, and the essential `index.html` structure. Further, discover React's state system with useState function usage to manage dynamic data, and the application’s translation feature which utilizes the Google Translate API.
Explore the creation of a new React project locally, beginning with the installation and update of Node.js, an essential step before generating the project. Delve into writing code and eventually deploying a professional-quality React application using Node to set up the project environment.
Learn to verify Node installation using terminal commands and to create a new React project using NPX. This walkthrough demonstrates generating a project named JSX to explore the basics of JSX syntax, as well as starting the development server with npm start and accessing the project in a browser on localhost:3000.
Explore the setup and structure of a React project, focusing on JSX transformation by Babel and file bundling by Webpack within the development server. Learn which files are essential for running a basic React app and the role of the dev server in transpiling JSX into executable JavaScript for the browser.
Embark on the journey of setting up a plain React application by clearing out unnecessary files and focusing on the essentials. Explore the creation of a basic component and displaying it using React and ReactDOM, covering the nuances of each library and the step-by-step process involving component creation, DOM element targeting, and rendering. Get ready to build a foundational understanding before tackling more advanced React concepts.
Dive into the intricacies of JSX, the syntax used in React to define UI components. Learn how JSX provides a concise way to write elements, which are then transformed by Babel into JavaScript, and discover why this abstraction makes development more intuitive compared to using React's createElement function directly. Explore JSX's role in instructing React on what to render and the significance of returning JSX from components for display.
Discover how to dynamically render content in React components using JSX, learning to utilize JavaScript variables and conditional logic to determine what to display. Understand how to interpolate variables within JSX using curly braces, and grasp the intricacies of how React handles different data types, such as strings, numbers, booleans, null, undefined, arrays, and objects.
Explore the dual utility of curly braces in JSX within React components, focusing on embedding expressions directly. Learn to display dynamic content, like the current time, with minimal code by executing expressions within the JSX. Understand the balance between clarity and conciseness when deciding to declare variables or include expressions inline.
Gain hands-on experience with React.js by incorporating a personal touch in a coding exercise. Modify the name variable within JSX using curly braces to display the name in an H1 element, then verify the solution to reinforce the concepts covered.
Explore embedding JavaScript variables within JSX in React by learning to print dynamic content. Discover the use of curly braces to reference variables in the H1 tag, enabling the display of personalized content within a component.
Explore how to display multiple JavaScript variables within a single JSX element in React, such as combining names and ages in an H1 tag. Discover the common pattern of defining functions and calculating values at the top of components, then later utilizing these variables in the JSX returned at the bottom.
Learn to use the props system in React to customize HTML elements, such as creating a number-specific input field. Explore the syntax for adding string and number props with JSX, handling JavaScript values, and understand the key differences between JSX props and HTML attributes. Additionally, discover the correct usage of objects and arrays as props without the common pitfalls associated with their implementation in JSX.
Explore the nuances of working with JSX properties, specifically understanding how attributes translate from HTML to JSX. Learn to apply JSX-specific rules, such as using camelCase for prop names, to correctly integrate HTML attributes in React components and ensure features like autoFocus work properly in your application.
Explore the conversion of traditional HTML to JSX in React, focusing on how to correctly handle attributes that require numbers, Booleans, and inline styles. Learn to use curly braces for numeric values, the shorthand for Boolean props, and the object syntax for styling, while avoiding common pitfalls and warnings in the console.
Explore how to correctly convert a React component by applying five key rules to fix a malfunctioning text area. Learn to adjust prop names to camel case, use curly braces for number attributes and boolean properties correctly, switch 'class' to 'className', and format inline styles as objects to make the component functional.
Learn how to better organize a React project by splitting it into multiple files, following the community convention of capitalizing component filenames. This video demonstrates creating an 'App.js' file to house the App component, and refactors 'index.js' to import and render it, improving project readability and maintainability.
Explore the essentials of module systems in React, particularly focusing on the nuances of import and export statements critical for managing components and files. This comprehensive guide delves into default and named exports, their respective syntaxes, rules for renaming and importing variables, and how to construct relative paths in complex directory structures.
Dive into building a React application that showcases a collection of personal digital assistants, like Alexa and Siri, focusing on the creation of reusable components. Learn to recognize opportunities for component reuse, avoid duplicated JSX, and establish a clear component hierarchy with parents, children, and siblings. Also, cover the customization of reusable components to display unique content for each instance.
Embark on setting up a new React project by creating the foundational structure. Start with a clean `src` directory, followed by crafting essential components: `index.js`, `App.js`, and `ProfileCard.js`. Learn to build a simple `ProfileCard` component to display three instances within the `App` component, while managing imports and rendering the app in the root DOM element. The focus is on achieving a basic rendering of components, setting the stage for further customization and dynamic content integration.
Explore the use of React's props system to customize components by passing data from a parent component to its child components. Learn how to communicate specific information, like titles and images, to individual instances of the profile card components and understand the unidirectional data flow that props facilitate in a React application.
Learn to effectively use React's prop system to pass data into components, creating distinct profile cards with unique titles and handles. Discover how to define custom attribute names that make code more intuitive for future maintenance and allow the seamless flow of data from parent to child components within a React application.
Explore how to dynamically render components in React by adding attributes to profile cards, then utilizing the prop system to pass data, allowing for unique content with a single component. Discover common React conventions for handling props to efficiently manage component customization and avoid repeated JSX.
Enhance React components' readability with JavaScript destructuring, making them more legible by simplifying prop references. Explore how to replace repetitive `props` usage with destructuring in both function arguments and the component body, streamlining code without adding extra variables. This common pattern is crucial for cleaner, more maintainable code in professional React projects.
Explore how to utilize React component props effectively by examining the 'bright text.js' exercise solution. Learn about prop requirements, destructuring within components, and how to dynamically alter component behavior by passing in specific props such as 'color' with values red, green, and blue to enhance understanding of React components customization.
Explore the benefits of utilizing React Developer Tools, a browser extension for Chrome and Firefox, to better inspect and debug an application. Learn to visualize component hierarchies, understand the flow of props, and inspect component output, streamlining the development process in complex React projects.
Explore common pitfalls when working with React prop systems, including the critical practice of matching attribute names correctly between parent and child components. Delve into how to debug prop-related issues, such as typos or incorrect spellings, which can lead to undefined errors and understand the importance of exact naming for smoother data flow in React components.
Explore how to add and use images in a ReactJS project by importing them as PNG files. Learn the difference between importing JavaScript files and non-JavaScript assets like images, dealing with base64 encoding for small images, and the use of separate file references for larger images. Understand how to display images in components using JSX and manage external images from an API without import statements.
Explore how to pass image variables as props into profile cards in React.js, ensuring the correct usage of JSX curly braces for JavaScript expressions. Learn the importance of using alt attributes for accessibility in images, addressing development server warnings to create an inclusive user experience.
Explore how to enhance React application styling using the Bulma CSS library. Gain an understanding of CSS fundamentals, how CSS operates within React components, and learn to integrate Bulma via NPM for professional-looking results. Delve into applying pre-written CSS rules for rapid, effective styling improvements.
Learn the correct way to introduce Bulma, a CSS framework, into a React.js project, utilizing npm to manage the installation efficiently. Understand the importance of inspecting the node modules directory to locate and import the necessary CSS files into the application, ensuring that external styles are correctly applied to enhance the project's appearance.
Explore integrating the Bulma CSS framework into a React component to build aesthetically pleasing profile cards. Learn to meticulously structure JSX with specific class names mandated by Bulma to ensure seamless styling, and grasp the importance of additional HTML to address layout issues such as overly large images. Discover how to overcome common challenges with CSS libraries through practical examples.
Enhance the styling of a React application by utilizing Bulma CSS for a polished hero banner and adding descriptive elements to profile cards. Learn how to adjust HTML structure, apply correct class names, and pass additional props for content display. This lesson focuses on refining the look and feel of the app with practical hands-on modifications.
Discover how to build dynamic content in React applications that respond to user interactions. Learn by creating an app that adds animal images on button clicks and enlarges a heart icon when an animal is liked, a deliberately designed project to teach key concepts before tackling more real-world scenarios.
Dive into the development of a React application by setting up the basic structure and component hierarchy for an interactive animal display. Learn how to organize and create functional components such as `App` and `AnimalShow`, manage props to customize child components, and establish a groundwork for handling dynamic content that changes with user interaction.
Explore the essentials of React by learning about two critical concepts: the event system and the state system. Start by creating an interactive UI with a simple button to better understand how user interactions are detected and handled, and how to manipulate the state to update the screen.
Explore the intricacies of the React event system, learning how to select appropriate events for user interactions such as clicks and changes. Understand the creation and naming of event handler functions, the conventions around their usage, and the importance of passing them correctly as props to plain elements without invoking them prematurely. Additionally, the handling of common events like `onClick` and `onChange` in React applications is addressed.
Understand the nuances of using parentheses in React event handlers, specifically why adding them executes the function immediately instead of passing a reference to be invoked later. Explore variations of passing event handlers to the `onClick` prop, comparing in-line arrow function callbacks versus separate function definitions based on readability and code length.
Consolidate React skills by adding a click event handler to a button that triggers a console log output. Learn to implement inline arrow functions for simple event handling and validate solutions with console tests or automated checks.
Discover the power of React's state system, which allows for dynamic updates of content in response to user interactions. By leveraging `useState` from React, learn how a simple click can increment a count variable and how that can lead to the re-rendering of components to display the updated state on-screen, ensuring the UI reflects the current state data accurately.
Learn the fundamental concept of state in React, which allows components to react to user interactions such as clicks and typing. Discover the useState function for initializing state within components, understand how to set default values, and utilize state in JSX. Uncover the pattern of updating state through event handlers and how React re-renders components in response to state changes.
Delve deeper into managing state in React applications by exploring the functionality of the useState hook. Learn how calling the setter function, such as setCount, triggers a component to re-render with the updated state. Understand the initial value assignment in useState and the process of state updating, where subsequent renders utilize the new state value instead of the initial default.
Explore the concept of array destructuring in JavaScript, a feature frequently used in React components, particularly with `useState`. Learn how array destructuring simplifies the retrieval of elements from arrays and understand its significance in assigning state variables and setter functions efficiently when managing component state.
Dive into hands-on coding to build upon the understanding of state and events with a React application, showcasing dynamic addition of randomized animal pictures as users interact. Address the practical design of state by introducing an array-based 'animals' state to manage the display of animal components, moving away from the temporary count variable to a robust array mechanism. Explore the benefits of delivering unique props to individual components, ensuring animal diversity.
Learn to implement a 'getRandomAnimal' function in the React app, which selects a random animal from an array and returns it. Explore updating state correctly with 'setAnimals' to add a new random animal to an array without directly modifying the state. This ensures that the React component re-renders accordingly when the state changes.
Explore the 'Animal Show' component, which dynamically displays elements by transforming an array of strings into React components using JavaScript's built-in map function. Delve into how props enable component customization and why assigning 'keys' to list items is vital for React's efficient DOM updates, although their importance will be clearer in complex applications.
Enhance the 'AnimalShow' React component by importing SVGs and mapping them to display alongside their respective animal names. Learn to dynamically render SVG images based on incoming prop types using JavaScript object shorthand notation and a simple mapping strategy to match an animal type to its SVG, preparing to add interactive styling features.
Explore React's state management and event handling to implement interactive UI elements. Learn to use the useState hook and onClick event handler to dynamically adjust the size of a heart icon based on user interactions, integrating inline styles to manipulate the element's appearance based on state changes within the AnimalShow component.
Explore modular styling in React apps by adding separate CSS files for each component. Dive into creating app.css and animal_show.css to style the App and AnimalShow components respectively, ensuring a more manageable and scalable approach to CSS in larger projects. Learn how to import and apply CSS rules to JSX elements using class names and selectors.
Enhance React components with tailored styling by assigning class names within JSX and creating corresponding CSS selectors. Dive into app.js to tag elements, then transition to app.css to apply styles for buttons, animal lists, and individual items, streamlining their layout with flexbox properties to center and uniformly size them. Focus on practical implementation without delving deeply into CSS theory, given React's priority in this course.
Delve into the core concepts of React covered in the application built during the course: event handling, state management, and list rendering. Explore event listeners, callback functions, and JSX syntax for events. Learn the importance of state in updating UI and its unique role in React components, and get familiar with the `useState` hook. Master the process of rendering lists using the `.map` function and understand when to utilize keys for list items. All these foundational techniques are critical for advancing to more complex React applications.
Proceed to a new React application focused on building an image search feature, similar to Google image search. Learn how to create a search interface that makes API requests to a third-party server for image data, which is then displayed in a grid format. Understand the difference in handling images when they're not predetermined assets, unlike previously used import statements for known images.
Begin with a clean slate in React by deleting existing files in the SRC directory and creating a new organizational structure for the project. Learn how to structure React applications by designing and creating an App component along with three other components—SearchBar, ImageList, and ImageShow—to manage different parts of a photo search app, ensuring a tidy and maintainable codebase.
Begin by exploring the data fetching process crucial to the application's functionality where users enter search terms to retrieve image lists. Learn to make HTTP requests to the Unsplash API, understand the response structure, and prepare to integrate the image data into a React application. Delve into HTTP request concepts and optional videos on asynchronous JavaScript if needed.
Explore the fundamentals of HTTP, the protocol essential for web communication. Delve into the anatomy of HTTP requests and responses, learn about methods like GET, POST, PUT, PATCH, DELETE, and comprehend the significance of status codes such as 200 OK and 400 Bad Request. Understand how React handles asynchronous operations, preparing for concepts like promises and awaiting responses from APIs like Unsplash.
Learn to utilize the Unsplash API to search for images within a React app. Discover the process of registering for an account, creating an application to obtain an access key, and understanding the API documentation. Understand the API request structure, including endpoints and authorization headers necessary to fetch image data using search parameters.
Learn how to integrate Axios, a popular JavaScript library, into a React project for making HTTP requests. Grasp how to install Axios using npm, how to structure API requests, how to include authorization headers and query parameters, and how to handle asynchronous API calls with async/await in React applications.
Explore the intricacies of handling asynchronous operations in React applications with the async/await syntax. Understand how to effectively manage API requests and responses, ensuring JavaScript execution pauses until data retrieval is complete, preventing premature access to unresolved data. Learn to use the `async` modifier to enable `await`, and when to integrate these keywords in a function to achieve seamless data fetching.
Optimize the data fetching function by incorporating search term parameters to query the Unsplash API, which is subject to a rate limit of 50 requests per hour. Enhance the function to return an array of image objects instead of the full response, streamlining integration with the React component that will utilize this data.
Explore the challenges of data flow in React applications, especially how components share state and trigger actions. Delve into the specifics of the component hierarchy involving 'App', 'SearchBar', and 'ImageList' components, and learn how to manage state and execute data fetching with React's prop system to pass data between parent-child relationships. Discover strategies to facilitate communication from child components to their parent to initiate API requests and handle the returned data.
Explore enabling child-to-parent communication in React using callback functions as props. Learn to capture user input from a child component, like a search term, and pass it up to the parent component to initiate data fetching, culminating in the aggregation and display of API response data.
Dive into React components and event handling by implementing a search bar. Learn to pass a callback function using props from a parent component down to a child, facilitating data flow upwards when a user interacts. Explore the setup of form submission via a button, to be replaced later with enter key functionality, and prepare to integrate API calls for fetching images based on user input.
Explore handling form submissions in React by detecting the 'Enter' key press with a `form` element. Uncover the necessity of event.preventDefault to prevent default form behavior and understand how wrapping an `input` in a `form` triggers a submit event. Learn to pass data to parent components upon form submissions and prepare to extract values from inputs for network requests.
Learn the proper method to handle form input in React by creating and managing state, setting up event handlers, and controlling input values. Gain insight into why direct DOM manipulation is discouraged and understand the five steps necessary to work with text inputs effectively, setting the stage for more advanced features later on.
Explore the handling of input elements in React, emphasizing the vital role of the `value` prop. Discover the underlying mechanics of binding input values to state variables, enabling control over inputs with React's state system. This approach simplifies reading and updating input values and lays the groundwork for adding dynamic features that respond to user input.
Learn to manage user input in a React application by creating and updating state with an event handler. The exercise demonstrates how to reflect user-entered text from an input field to display live updates within a paragraph element, utilizing React's state management and event handling patterns.
Enhance React components by integrating form submission with state management to communicate data to parent components. Learn to handle a user's form submission in the search bar component, using controlled inputs to maintain the term state and pass it to the `handleSubmit` handler in the app component. Discover how to utilize the `searchImages` function, call it with the search term, and inspect network requests to confirm successful API calls.
Ensure search images functions correctly in React by using async/await patterns. The lesson focuses on handling asynchronous JavaScript, specifically when dealing with network requests and Promises. Learn to properly await the response from an API to receive an array of image objects and pass the data through props to a child component.
Explore the integration of state and props in React while passing a fetched list of images from an API response to the ImageList component. Learn to utilize useState to manage state changes, update content dynamically on the screen, and understand the re-rendering process affecting both parent and child components in a React application.
Discover how to dynamically render a collection of React components by iterating over an array of image objects and utilizing the `.map` function. Learn to pass unique properties to each `ImageShow` component and address the significance of the `key` prop for list items to maintain performance and avoid common issues in React.js applications.
Explore the significance of the `key` prop in React and how it optimizes updates to lists of elements. Delve into the process of applying a key prop during the mapping step to ensure efficient, minimal DOM changes when state updates occur, enabling optimized rendering and avoiding unnecessary re-renders of entire lists.
Explore the crucial role of 'keys' in React lists for ensuring efficient updates. Learn how to correctly apply keys to the topmost element in a list, ensure they are unique, consistent, and understand the importance of string or number data types for keys. Practical examples and common pitfalls are explained, along with fallbacks for when unique IDs are not available.
Learn to enhance the user experience in React applications by efficiently displaying images. Discover how to select the optimal image size from an API response for performance benefits and implement an image element with both `src` and `alt` attributes for improved accessibility and faster loading times. Additionally, understand the importance of styling for presenting images in an appealing way.
Enhance the aesthetic and functionality of the React application by introducing CSS styles to the search bar and aligning image lists more effectively. Learn to create and link CSS files, `searchbar.css` and `imagelist.css`, to their respective components, apply styling rules for better UI layout, and add descriptive labels for user guidance.
Explore the foundational concepts of React, focusing on controlled inputs management through state, enabling seamless text fields handling. Dive into the intricate flow of communication between parent and child components, mastering the callback functions for data transfer. Understand the crucial role of keys in rendering lists, ensuring performant and bug-free UI updates when working with dynamic data.
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.