title: setState of parent does not fire componentWillReceiveProps of child
body: <p>I have a component parent and a component child with some props connected to the parent state.  </p>
  
  <p>In the parent I call setState but the <code>componentWillReceiveProps</code> function of the child is not fired.<br>
  More precisaly, its fired in a certain point of the parent, its not fired in another point.  </p>
  
  <p>This is the parent:</p>
  
  <pre><code>... imports
  
  class HomeScreen extends Component {
  
      constructor(props) {
          super(props);
  
          dispatchFbPermissionAction = this.dispatchFbPermissionAction.bind(this);
  
          this.state = {
              fbPermissions: [],
          }
      }
  
      componentDidMount () {
          this._loadInitialState();
      }
  
      _responsePermissionsCallback(error: ?Object, result: ?Object) {
          if (error) {
              log('Error fetching data: ' + error.toString());
          } else {
              dispatchFbPermissionAction(result.data);
          }
      }
  
      dispatchFbPermissionAction = (data) =&gt; {
          // **NOT FIRED**
          this.setState({
              fbPermissions: data
          });
  
          this.props.fbPermissionsLoaded(data);
      }
  
      async _loadInitialState() {
          AccessToken.getCurrentAccessToken().then(
              (data) =&gt; {
                  if (data) {
                      const infoRequest = new GraphRequest(
                        '/me/permissions',
                        null,
                        this._responsePermissionsCallback,
                      );
                      new GraphRequestManager().addRequest(infoRequest).start();
  
                      // **FIRED**
                      this.setState({
                          ...
                      });
  
                      this.props.loggedIn();
                  }
              }
          );
      }
  
      render () {
          const { navigation } = this.props;
  
          return (
              &lt;Container&gt;
                  &lt;ScrollableTabView
                      &lt;View tabLabel="ios-film" style={styles.tabView}&gt;
                          &lt;Text style={styles.tabTitle}&gt;{_.toUpper(strings("main.theatres"))}&lt;/Text&gt;
                          &lt;ListTheatre navigation={this.props.navigation} filterText={this.state.filterText} isLoggedIn={this.state.isLoggedIn} fbPermissions={this.state.fbPermissions}&gt;&lt;/ListTheatre&gt;
                      &lt;/View&gt;
                  &lt;/ScrollableTabView&gt;
              &lt;/Container&gt;
          )
      }
  }
  
  const mapStateToProps = (state) =&gt; {
      return {
          isLoggedIn: state.isLoggedIn,
          listTheatre: state.listTheatre,
          listMusic: state.listMusic
      };
  };
  
  // wraps dispatch to create nicer functions to call within our component
  const mapDispatchToProps = (dispatch) =&gt; ({
      startup: () =&gt; dispatch(StartupActions.startup()),
      loggedIn: () =&gt; dispatch({
          type: LOGGED_IN
      }),
      fbPermissionsLoaded: (data) =&gt; dispatch({
          type: FB_PERMISSIONS_LOADED,
          fbPermissions: data
      })
  });
  
  export default connect(mapStateToProps, mapDispatchToProps)(HomeScreen)
  </code></pre>
  
  <p>And this is the child:</p>
  
  <pre><code>... imports
  
  class ListTheatre extends Component {
  
      constructor(props) {
          super(props);
  
          this.state = {
              ...
          }
      }
  
      componentWillReceiveProps(nextProps) {
          log(this.props)
      }
  
      shouldComponentUpdate(nextProps, nextState) {
          return !nextState.fetching;
      }
  
      render() {
          const { navigate } = this.props.navigation;
  
          return (
              &lt;SectionList
                  ...
              /&gt;
          )
      }
  }
  
  ListTheatre.propTypes = {
      isLoggedIn: PropTypes.bool.isRequired,
  }
  
  const mapStateToProps = (state) =&gt; {
      return {
          isLoggedIn: state.isLoggedIn
      };
  };
  
  const mapDispatchToProps = (dispatch) =&gt; ({
      startup: () =&gt; dispatch(StartupActions.startup())
  });
  
  export default connect(mapStateToProps, mapDispatchToProps)(ListTheatre);
  </code></pre>
  
  <p>I do not why the setState after the <code>GraphRequestManager().addRequest</code> call works like a charm (the componentWillReceiveProps function of the child is fired), while the setState in the dispatchFbPermissionAction function does not fire the componentWillReceiveProps function of the child.</p>