title: infinite loop when dispatching in componentWillReceiveProps
body: <p>I have a Profile component that is loaded by react-router (path="profile/:username") and the component itself looks like this:</p>
  
  <pre><code>...
  import { fetchUser } from '../actions/user';
  
  class Profile extends Component {
    constructor(props) {
      super(props);
    }
    componentDidMount() {
      const { username } = this.props;
      this.fetchUser(username);
    }
    componentWillReceiveProps(nextProps) {
      const { username } = nextProps.params;
      this.fetchUser(username);
    }
    fetchUser(username) {
      const { dispatch } = this.props;
      dispatch(fetchUser(username));
    }
    render() {...}
  }
  
  export default connect((state, ownProps) =&gt; {
    return {
      username: ownProps.params.username,
      isAuthenticated: state.auth.isAuthenticated
    };
  })(Profile);
  </code></pre>
  
  <p>And the fetchUser action looks like this (redux-api-middleware):</p>
  
  <pre><code>function fetchUser(id) {
    let token = localStorage.getItem('jwt');
    return {
      [CALL_API]: {
        endpoint: `http://localhost:3000/api/users/${id}`,
        method: 'GET',
        headers: { 'x-access-token': token },
        types: [FETCH_USER_REQUEST, FETCH_USER_SUCCESS, FETCH_USER_FAILURE]
      }
    }
  }
  </code></pre>
  
  <p>The reason I added componentWillReceiveProps function is to react when the URL changes to another :username and to load that users profile info. At a first glance everything seems to work but then I noticed while debugging that componentWillReceiveProps function is called in a infinite loop and I don't know why. If I remove componentWillReceiveProps then the profile doesn't get updated with the new username but then I have no loops problem. Any ideas?</p>