I've been very happy with the material-ui components for React. They cover every component I need, and it was trivial to integrate them into an existing app over time, no need to do a full conversion on day one. They also seem entirely React idiomatic, I've learned a lot about how to build reusable components myself from their API.
The problem with material-ui is that a lot of their components don't follow material design guidelines like their tables for example. It looks good, but it's not material. react-mdl is much closer to material, but incomplete due to missing components. Angular seems to have the best implementation so far, but I'm looking forward to material-design-lite v2
re:learned a lot about how to build reusable components myself from their API
material-ui's tutorials are really bad examples on this.
They teach you to import from specific dir path inside material-ui.
(e.g. import Pen from 'material-ui/lib/pen' or whatever)
Instead, they should recommend:
import { Pen } from 'material-ui'
since most of their exports are already in material-ui/src/index.js file (or some index.js file from package.json's main part)
I was put off by their TextField implementation. Their oversized <input> element doesn't play well with browsers, eg. the browser's auto-complete looks completely out of space.