Learning Angular looks deceptively easy. At first, it's easy to understand the purpose of different directives like ng-repeat, ng-if, ng-show and ng-hide. Sometimes, there are even situations when you don't need to write a single line of JS to make your app work. But as soon as you start working on non-trivial tasks, you'll notice yourself fighting with unusual issues and behaviors of the Angular framework.
Many people say that the only way to study Angular well is to read its source code. I agree that while this is the most comprehensive way to learn, it might be overwhelming for people new to Angular. Also, it takes some time for people to understand the purpose of each Angular component and to use it correctly in each situation.
The Angular Way
The framework forces us to use its coding style which can sometimes be questioned. Whether it's good or not - I'll leave it up to you to decide. Study hard and you will get a complete and decent solution for creating a single page application without a need to wire up many dependencies to make things work.
The React Way
React, on the other hand, is quite easy to learn due to its size and simplicity, although it might be confusing at first. But, as React devs say, give it five minutes, and you'll understand WHY it's different.
Reading the guides from the React documentation is enough to start building out awesome things with it. You just need to understand basic things like what is a Web component in general, what a React component is, what JSX is, how is virtual DOM different from the real one and how React uses the DOM.
The problem with this comparison is in that React itself is not enough to create an SPA. Many people just use React as the "V" in the MVC architecture, which means you have to use other components and patterns with it in order to create a single page app. It also means you can use React with other popular frameworks such as Angular and Backbone and while using React tools for optimizing the performance of your application.
To build an SPA without using other popular frameworks, you need to use React's Router as a way to organize your data flow. There are several patterns for this, such as Flux, Redux and Reflux, which all introduce unidirectional flow of data.
It takes time to learn how the router works and how the data flows through your React app, so Angular has an advantage here by providing everything out of the box. But in the end, if you spend some time reading through different articles on how to create and structure your app, you'll build a fast and maintainable solution which will be easy for new people to dive in and work on.
What was your experience with learning Angular and React? Let us know in the comments below!