From this email thread on designing React UI and talking to a few folks, I understand that the disagreement largely is on passing the entire state object to all components.
I think all components should not share the same state object. Here's why.
Like pure functions. When we pass the a common state variable to all components, the render method would be triggered even for unrelated changes. The Virtual DOM does intelligent work, but that is only after React has regenerated the component (in the Virtual DOM). It might be cheap, but not necessary. In the unavoidable scenario where we have to pass state information to a componenty that it doesn't need, we should use the PureRenderMixin or implement shouldComponentUpdate on every(or selected nodes) component to avoid re-rendering everything all the time. Everywhere else we should just tie the component to the piece of state that it relies on.