For a static website with a few pages, you wouldn't need to. But for more complex apps, that's where the pay off is. A brief example: In one of our apps, we needed various select menu behaviors. Sometimes it would accept normal attributes (strings for values). Sometimes arbitrary objects having a toString method. Sometimes it needed to load data. Sometimes it needed to load data given only a model name, and know how to page it. In react, I was able to do this with a single base select component, with a few wrappers (decorators) to add in the various behaviors. All encapsulated, and abstracted behind a relatively simple interface. With honestly not that much more code than the example in this tutorial. And it all felt natural -- like I was just writing javascript. Thats the good side to React.
Do you have a link you want to share to one of your apps that uses React? I'd like to know where the threshold for when an app is considered complex is.
I've asked other React developers the same before, but so far the links I've seen are of "apps" that could be made with tops ~120 lines of vanilla JS... :|
Here is an open source React Native app that I recently did for The Andy Warhol Museum: https://github.com/CMP-Studio/TheWarholOutLoud. (Some of it's more complex features: Floor and region detection through BLE beacons and an audio player that slowly learns preferences and rearranges content.) React Native targets native views instead of the DOM, but other then that it's conceptually and technically very similar to React and should serve as a example of a complex app using React ideas.
I've played around with react native, and I will say it feels nothing like normal react (where "normal" is writing for a web app). The only thing that is similar is syntax. Everything else is new/different: elements, styling, interaction listening, etc.
This is the thing most people confuse about React. The similarity you see is React, the differences are the implementation for that platform.
The elements, styling, and interaction listening is React for Web.
The equivalent of the above in React Native is... React for native.
Remove all that stuff specific to each platform.
What is left is React.
Honestly React could be considered it's own design pattern [or a renaming of existing], with fb/ReactJS and fb/ReactNative being the most well known implementations.
For the example in question its an internal company tool, so can't link it. Its about 20k loc, excluding css (etc.). Most of the app's i've been working on (for work or side projects) are in the 10k-100k area. My general stance on it is there's a difference between a static content site and an application -- if its the latter your almost always going to be better off going with something like React.
You know, this sounds like a story about the soldier who made the soup from the axe. Maybe after all these wrappers and decorators you could drop react too and do just fine without it?