I want to detect when the user has hit the back button. Essentially, when a user goes from the /projects to /projects/foo the nav style changes.
<Route path="/projects" component={(props, state, params) =>
<Projects {...props} />
</Route>
componentDidMount
this.props.location.pathname
render
As you noted, componentDidMount will only be called once when the component is mounted. Instead, use the lifecycle hook componentWillReceiveProps. Here is the documentation.
You can use this to conditionally setState if you're at the desired/correct path. This will update the state which will then re-render the component.