Its really great that the team has finally solved this longstanding "hacky" API - for some historical perspective, the context api existed for a long time completely undocumented. Here's Michael Jackson of React Router fame telling the story of how he discovered the old context api (about 10 mins in: https://www.youtube.com/watch?v=kS8utR_Rp2Q)
One thing I dont really get about the old vs new context API is the ability to "just" use the implicit context without having to import the consumer. Notice all the examples usually are single file so you dont see the seams but you used to be able to pull off your context property just by declaring it:
```
class Button extends React.Component {
render() {
return (
<button style={{background: this.context.color}}>
{this.props.children}
</button>
);
}
}Button.contextTypes = {
color: PropTypes.string
};```
now you have to import:
```
import ColorContext from '../ColorContext' // this is new
class Button extends React.Component {
render() {
return (
<ColorContext.Consumer>
{color => (
<button style={{background: color}}>
{this.props.children}
</button>
)}
</ColorContext.Consumer>
);
}
}```
i know the react team probably thought long and hard about this and explicit dependency injection is probably a good thing but boy i miss the "lightweight" feel of the old api :)