I actually had to look up "fad"; I knew pretty much what it meant but I figured I should make sure we're all thinking the same thing about the term:
Fad (noun): an intense and widely shared enthusiasm for something, especially one that is short-lived and without basis in the object's qualities; a craze.
So now that I'm clear on the definition, I'd say it is half of a fad for sure, and the other half is really subjective and probably false. So I'll address both halves, and let you decide.
- "an intense and widely shared enthusiasm for something": Absolutely. I think the main reason is that it can make things simpler, and that makes people more productive and excited. Things can be simpler because you don't have to track state in your view layer (you can, but I don't advise it). For five or six years I wrote View's in Backbone, and one of the most annoying things there is that you have to think all the time about what changed in the data, so you can translate that change into the DOM. This is a weak point of the big MVC frameworks, and it wasn't until I saw an alternative that I realized what a source of problems that can be. Not having to worry about it is very exciting, so I share and understand the enthusiasm.
- "especially one that is short-lived and without basis in the object's qualities; a craze": This half of the definition is pretty subjective. Will React be short-lived? It's a piece of technology in an innovative space, so sure; but it'll probably last longer than you'll have your current cell phone. I'd say the likely end of React would be some sort of browser level integration for DOM diffing. It could meet some other end, but as long as there's a value proposition for DOM diffing then React has a raison d'etre. I think I've explained briefly why there's a basis for React's value as a framework, so I'll say the very last part of that definition is objectively untrue.
As far as the question of should you know JavaScript really well before diving into React; I would say you should dive into React if you know why you're using it. You don't need to be the worlds leading expert on JavaScript eccentricities to write great code, but you should have a general idea of what you're trying to accomplish when you sit down at your keyboard. I think you'll get the most out of React if you make your components as stateless and functional as possible, otherwise you're adding some complexity to your code that probably doesn't need to be there. So before you get into React I think it would be a good idea to understand a bit about the terms "stateless" and "functional", how that looks in JavaScript; and if that makes sense then you'll get a lot out of React.