I've got react-router 4.0.0-alpha.4 installed in my React project, which is a tutorial that I'm following, and I'm having a really difficult time understanding how it's being called in StorePicker.jsx
App.jsx
import React from 'react'; 
import { render } from 'react-dom'; 
import './css/style.css'; 
import {BrowserRouter, Match, Miss} from 'react-router';
import StorePicker from './components/StorePicker';
import App from './components/App';
import NotFound from './components/NotFound';
const Root = () => {
    return(
        <BrowserRouter>
            <div>
                <Match exactly pattern="/" component={StorePicker}/>
                <Match pattern="/store/:storeId" component={App}/>
                <Miss component={NotFound}/>
            </div>
        </BrowserRouter>
    )
}
render(<Root/>, document.querySelector('#main'));
So towards the end in StorePicker.jsx I create a contextTypes property on the StorePicker object. I then set the value equal to { router: React.PropTypes.object }. React.PropTypes.object has nothing to do with the router though.
But in goToStore(event) all of a sudden the router object is available in this.context.router. 
- Where did this come from? Is it because the word - routeris a special keyword when I use it in- contextTypes, and- React.PropTypes.objectsomehow knows to fetch the router object as a result and add it to- this.context?
- Why is this tutorial even telling me to use this pattern? According to the React docs, - contextshould be avoided: https://facebook.github.io/react/docs/context.html
- Is there a better way to do this? 
StorePicker.jsx
import React from 'react';
import { getFunName } from '../helpers.js'
class StorePicker extends React.Component{
    goToStore(event){
        event.preventDefault();
        const storeId = "1234";
        this.context.router.transitionTo(`/store/${storeId}`);
    }
    render(){
        return (
            <button onClick={(e) => this.goToStore(e)}>CLICK ME</button>
        )
    }
};
StorePicker.contextTypes = {
    router: React.PropTypes.object
}
export default StorePicker;
The code from this tutorial works, but I have no idea why it's working.
 
    