A  React Beginners Roadmap through the React Eco System
Tags: webdev, javascript, learning, react
Published: 2017-10-27 09:00:33

---
title: "A  React Beginners Roadmap through the React Eco System"
published: true
tags: Web Development,JavaScript,learning,React
canonical_url: http://www.andreasreiterer.at/web-development/react-beginners-roadmap/
cover_image: https://thepracticaldev.s3.amazonaws.com/i/sw8z5d60i9oa19e3mpfd.jpg
---

_React beginners often have a hard time learning React, since the React ecosystem seems huge. You will inevitably stumble upon stuff like Redux, Webpack or Babel very early. At this point I was so overwhelmed because I had no clue where to start first._

_It was even more confusing that I didn’t even know the problems that those tools tried to solve.&nbsp;__Today I know better and I’m going to tell you that there is no need for any of these – at least not yet._

_This post appeared first on [my blog](http://www.andreasreiterer.at/web-development/react-beginners-roadmap/)._

## Introduction

I’m writing this for everyone who is just starting out – **React beginners, or newbies in web development**. However, I assume that you have at least some basic knowledge of HTML, CSS and JavaScript.

This post is **designed to be a roadmap** that guides you step by step from the entry level to more sophisticated topics – it helps you to focus on things that matter – instead of wasting time worrying about things that you don’t need yet. The roadmap will **not contain detailed explanations** of all of the different topics.&nbsp;In-depth content will be covered in future posts and extra detailed content about all of this will be part of my new project: **[React for Noobs](https://www.reactfornoobs.com)**&nbsp;– a no-confusion guide for React beginners.

But enough of that – the next sections will show you, what to focus on to improve your knowledge in React and it’s eco system without pain.

## Prerequisites

Before starting with React, you should have at least a basic knowledge about HTML, CSS and JavaScript. That said, have a look at ECMAScript6 (ES6) – when working with react, you will need at least

- [Arrow Functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
- [Classes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes)
- [Template Literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)
- [let](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let)
- [const](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const)

This should be enough to begin with the basics.

## Basics for React Beginners

When getting started with React, I strongly suggest that you start with the [official tutorial](https://reactjs.org/tutorial/tutorial.html). You’ll learn everything you need to understand the bare basics of React.

In the next sections, I’ll provide some additional thoughts to some of the stuff that you see in said tutorial.

### create-react-app

This awesome tool makes bootstrapping a new application a LOT easier. It saves you from fiddling around in configurations that might just confuse you a lot. So for now, stick with create-react-app and be happy to bootstrap a new application with just one command.

### Components

In React, everything is structured in components. So as soon as you know how to work with JSX, make yourself comfortable with passing data into components:&nbsp; **_props_** , managing&nbsp; **_state_** inside a component and also&nbsp; **_lifting_ _state_** to a parent component. Learn how to properly **handle events** or pass functions as props (see [“Lifting State Up”](https://reactjs.org/tutorial/tutorial.html#lifting-state-up)). Also don’t forget that a little **styling** won’t hurt :)

The next step is then to learn how to do **[conditional rendering](https://reactjs.org/docs/conditional-rendering.html)&nbsp;**and how to render [**Lists**](https://reactjs.org/docs/lists-and-keys.html) and [**Forms**](https://reactjs.org/docs/forms.html), as well as how to **[compose your components](https://reactjs.org/docs/composition-vs-inheritance.html)**.

If you learned all of the above, you should create a small application on your own to strengthen what you’ve learned. Something small and simple. Back then, I just built a Tweet component that should look exactly like the one you see on Twitter. All you have to do is to create the necessary components, put in some static data and play around with it. You could also extend it to be a list of tweets.

If you feel comfortable enough, you can focus on more advanced stuff.

## Advanced React

Now that you’re able to create useful components, it’s time to have a look at **[PropTypes](https://www.andreasreiterer.at/web-development/react-proptypes/)**. Also, as you might want to get your data from a remote server or API, make yourself familiar with **[Life Cycle Methods](https://www.andreasreiterer.at/web-development/reactjs-lifecycle-methods/)**&nbsp;and how to **[fetch data from a server](https://daveceddia.com/ajax-requests-in-react/)**. Note: You can use React with any REST backend / API you want – there is no restriction.

You might want to split your app into different screens. To handle the transitions, you will need **[React Router](https://medium.com/@pshrmn/a-simple-react-router-v4-tutorial-7f23ff27adf)**. Alternative solutions for that exist, however, I suggest to start with react router, which seems to be the go-to solution in the community.

If you don’t have already, also have a look at how to handle **[forms](https://reactjs.org/docs/forms.html),** especially have a look at **[uncontrolled components](https://reactjs.org/docs/uncontrolled-components.html),** which you’ll need most of the time when working with forms.

Tip: Use **[functional components over class components](https://www.andreasreiterer.at/web-development/react-functional-components/)** everywhere you can. This also means, you should try to keep as many components stateless as you can. You’ll be thankful later when you didn’t spread your state over your whole application – especially if you have to do some refactoring. For further reading, I recommend Dan Abramov’s article about **[Presentational and Container Components](https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0).&nbsp;&nbsp;**

**[Error Boundaries](https://reactjs.org/docs/error-boundaries.html)&nbsp;**were introduced with React 16. They catch JavaScript errors and avoid crashing the whole application. Instead, React will display a fallback UI instead of the failed child component tree.

To avoid errors in the first place, have a look at **[Jest](https://facebook.github.io/jest/docs/en/getting-started.html)** – . All the apps that were created with create-react-app support testing with Jest. The cool thing with Jest is, that you can test snapshots of React component trees. That makes creating tests a lot easier.

## What now?

Now you know a lot about React. You should be able to create some complex applications that are communicating with a backend server or API.

At a certain point you might realise that managing state gets harder, the more complex your application is. You should now have a look at **state management with Redux or MobX.** &nbsp;I’d suggest you try both and decide what fit’s best. Many React Beginners stumble over Redux relatively early in their React career and then try to put it into all of their applications. Most of the time this will just add complexity – instead of taking it away.

In some cases you want to render your React App at a Server. This might be necessary out of SEO or performance reasons. I put this here, because I truly believe that React Beginners shouldn’t be thinking about **Server Side Rendering**.

If you want to change something in the build process or in the hidden configuration files (thanks to create-react-app), you can [**eject**](https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#npm-run-eject) it. I do not suggest that for React Beginners, because you will instantly add a lot of complexity to your application. So prepare yourself for that by familiarizing yourself with **Webpack** and **Babel**. Their configuration files will lie around in your application folder, you should know what they do.

## Wrapping Up

React Beginners often have a hard time getting into it. Once you got the basics and an idea how to proceed step by step, it gets a lot easier. I hope that this guide helped you to understand what you – as a beginner – really need, and what you should postpone to later.

I want to make the life of React beginners a bit easier. That’s why I recently started working on React For Noobs. It is a step by step guide that takes React Beginners by the hand and guides them step by step from Noob to Pro.

[![React for Noobs - A Guide from Noob to Pro](http://www.reactfornoobs.com/img/ReactForNoobs.jpg)](https://www.reactfornoobs.com)

[React for Noobs - A Guide from Noob to Pro](https://www.reactfornoobs.com)

## There is even more ...

Do you want to learn more about React and it's ecosystem? Good news! Subscribe to my [newsletter](https://www.andreasreiterer.at/weekly-webdev-newsletter/) to get more articles delivered right into your inbox, for free!

-----

Thanks for reading the article until the end! I would appreciate if you let me know what you think. Leave a comment, contact me on [Twitter](https://www.twitter.com/a_reiterer) or send an email to [hi@andreasreiterer.at](mailto:hi@andreasreiterer.at)&nbsp;– I’m happy to respond to any message I get.