For run of the mill sites, ReactJS is probably a bit too complex, but if your site is more like an application then ReactJS is the way to go. We use ReactJS for all sites which are split into front- and back- end.
Any ReactJS web-site will in effect be a complete re-write and you really have to use ReactJS as a sort of `IDE` in association with `npm`. Don't despair as ReactJS [with npm] can/should be able to use all your favourite solutions [even jQuery though not for DOM stuff].
What this means in real terms is that all of the awesome libraries that you might be used to, e.g. mapbox, moment, chart etc. can all be used seamlessly within your ReactJS App because they all have `NPM modules`. ReactJS is also the backbone of React-Native [true apps] so if you are looking for a consistent desktop/app platform then this is the way to go. Just as a side-note, ReactJS is NOT NodeJS and while there are some similarities [JS] and the two work well together, think of ReactJS as a client platform and NodeJS as server-side. We actually use/prefer PHP/Laravel APIs instead.
The last word here is that ReactJS [it's a Facebook product] is very web-tomorrow and as we said off the bat: it's going to make your web-site/systems into real web-applications so think re-write and clean-sheet. Your current or planned database structure won't be affected in any way, so no need to panic if you are migrating, but if your existing system is say WordPress or CodeIgniter [PHP] then your data will use APIs and your ReactJS App will call these.
In summary, you'll have a server side [ideally Laravel] with APIs and a client side [React JS] with a possible React-Native App Suite.
For those of a technical disposition we love WebPack V4 with all its caching and loader support. We have also found that Zurb Foundation is an excellent NPM CSS library which just seems to marry well with React. You can also checkout our React Boilerplate on bitbucket as a public repo if this helps you.
If you have a `large` App [e.g. vShop] then we also deploy a product called Redux which allows your entire application to hold or `contain` something called a `state` in one place = a way of managing your app so that data is always consistent no matter the size or scale or your project.