Seriously. I can’t even get a simple React project started without failing into the npm/package.json abyss for days.
None of the documentation/tutorials are current. I find tutoritals that are a couple months old and they’re depreciated and don’t work because between React, node, Babel, etc nobody can go a week without changing something and adding a new version, and having one of those change breaks everything else.
Even Facebook’s official documentation for React is garbage and doesn’t work.
I feel like it used to be “Spend 10 minutes setting up a project and spend 30 hours programming the project”. Now it’s “Spend 30 hours settting up a project and 10 minutes programming the project”.
I get your frustration. One thing to bear in mind is that React is designed to make building large single page applications a much less complex and a much less error-prone process; it is very good at this, but many apps aren’t large, or single page. However, you’re vastly overstating the pace of change, unless you’re sitting on the absolute bleeding edge of things. And as it’s a single library which can be brought in via a CDN if necessary, the hyperbole is pretty strong here - you don’t need to install anything if it is actually a simple app you’re building
The basic fact is that writing complex apps in plain JS is a shit experience. JS is not a good language for writing complex maintainable applications, and as more and more stuff moves to the frontend, most non-trivial apps would be classified as complex. For a large % of programmers who have to work on the front end React is a godsend. That’s not cargo culting. React is a bit boilerplatey, and async is a bit of a faff. But to counter that, it has a tiny API, only takes a day or two to learn, almost completely removes having to deal directly with the DOM, and promotes a useful, functional pattern to structure apps that works well even if you don’t use React, and is very easy to test.
Yeah, there is a lot of old React stuff, and it’s changes a little (but no where near as drastically as Angular did.)
It took me a couple of tries to find a youtube tutorial to work with my setup. Just keep at it.
Yes, React is a logical leap. It is a different way of thinking about how your code and the screen interact. But there is a reason why these libraries/frameworks are so popular - they are very effective at creating complex systems that work well. Yes, it is a pain. Yes, they are constantly changing.
React is one of the dominant technologies on the scene now. Just look at job postings - look at all the ones that mention React. I assume you want to get hired at some point? Avoiding React (or Angular, etc) will limit your options.
As far as not getting something going, I made this pen a while back to help people get started with React. You can build simple React apps in codepen (as I did for all the FCC DV apps) but it gets complicated as your app gets bigger. Eventually you’ll want to do as prohorova suggests and use create-react-app - it will create a basic working react app for you. But that assumes that you understand basic node, npm, etc.
And eventually you’ll want to learn Redux too, as that is a whole other kettle of fish. And then React Native lets you create apps for mobile devices with your React code. I’m creating my first React Native app right now. It’s basically done and I just have to launch it on Google Play.
Yes, it’s a pain, but it is sooooo worth it. I was really frustrated with the DV section as I had to dig and dig for info on React. But I’m glad I did it. Once you get past the initial “wtf is happening” stage, it gets easier.
Could you give an example of something you’ve tried and the errors that prevented you from continuing? I can sympathize since I also hate setting up projects, but at its simplest, React is very easy to get going.
In seriousness tho, what are you expecting is a common frustration of the JS community ( often treated with humor ) that has nothing to do with React per se.
I have to admit that too many people approach React with the wrong mindset: I see so many beginners try to learn the popular add-on libraries ( redux for example) before even understanding how to use React itself.
React Native is worse. Their official project generator expects you to downgrade npm to v4 and doesn’t work otherwise. You can’t even get past the first page of documentation without doing so. Fortunately, Vue.js is a very nice alternative, as others have mentioned, and there are things like Quasar that integrate it into their mobile framework.
To be fair though, getting Vue + Quasar to do what RN does out of the box is much, much more of a minefield and fairly nightmarish; you need Vue (first framework) + Quasar (second framework) + Cordova (third framework). And + Android Platform SDK (or IOS) (fourth framework) - though that’s generally always going to be the case, it just needs to be done at a much earlier point with the Vue/Quasar/Cordova combination. All of which have their own problems. Versus, at a basic level, RN only. You can dump Cordova and make a progressive web app, but then basic React does that fine (as does Vue)
You are not alone in finding React a bit of a mess. it was created by Facebook to fulfil a specific need, not as a general purpose platform for web development.
You won’t hear about it much on FCC, but many people prefer working with Angular. It has a standard project setup, consistent architecture, and easy app generation with the Angular-CLI. There is definitely a learning curve at the beginning, but once you get the basics down, development is rapid and mostly pain free. It just works.
If you are totally new to frameworks though, Vue.js might be a simpler introduction.
For context (if you worried about employability), Angular is listed in 8.8% of IT job ads, React in 3.5%, Vue in 0.38%, and Jquery (still) 5.7%.
That’s odd - I’ve been working in React Native for the last week and I’ve been using NPM 5.3.0. I’m sorry you’ve had such a bad experience with RN - I’ve actually found it quite easy and the documentation quite good. If you know React, then RN is a breeze - just requiring some minor JSX adjustments. If you’ve done create-react-app, then create-react-native-app is easy. The only difficult part of the process getting the Android emulator working, but I imagine that is the pretty much the same for every mobile development process.