So, you need really to spend time to understand the core of React very, very well. And this takes time, effort and at least a couple of real and serious apps you should write to understand why React and its concept are the next step in FE dev and why others use React's concept as blueprint (e.g. Inferno). Tutorials are not enough, real projects are the best way to grok React.
I don't think it's like Java Swing, not at all (I think the comparison is misleading since React is from the ground very different, e.g. totally different design patterns/paradigms, .g. no observer pattern, and a super minimal API). It's a tool which is super flexible. It's definitely not your daddy's jQuery-based front-end framework which let you start quickly. But once you get more experienced with React you face much better code maintainability with a small code base already. Further, you should be good at JS and ES6. I guess this might be another obstacle for many. Compared to Vue which I like a lot and which shares also some similarities, Vue is more complex due to a large API surface, code-in-HTML templating syntax, nested instance semantics, observable gotchas, ES5 workarounds and a larger documentation that is absolutely vital to read and understand.
Give React a try. You need of course a real use case. Many website's use cases don't require React and could be done with some simple server-side rendering. So, React is def not the best tool of every job.
I was ignoring React too long by just using it for some toy projects or going through tutorials. This was not enough. Once I tried React for a real project, I learned its brilliance and I don't want to go back to anything else for SPAs or websites with more interactivity.
"It's now JSX and you have to write boilerplate JS code just to show a simple hello world example."
This is absolute insanity. It's time for a re-discovery of “vanilla” HTML, CSS, with a sprinkling of "vanilla" JS from the ground up without any frameworks.
I mean.. this website doesn't even seem to work as intended: http://imgur.com/LdRFS4L
Another minus is that you no longer use the existing conventions that stood the test of time, HTML and CSS. It's now JSX and you have to write boilerplate JS code just to show a simple hello world example. On top of that it poses barriers for designers who only had to worry about how the HTML/CSS looks, now additional work has to go into splitting everything into myriad logical pieces which really have no impact on the overall productivity or quality. And that's only for the React view side, the real beast is Redux. That simple grid table you could get away with using jqGrid is now a 10 week job involving multiple engineers.
I'm curious to know if anyone found any enlightment working with Vue.js and whether something like Redux makes sense to hold states of the app or if they got away with it.