AJAX requests should go in the componentDidMount lifecycle event.
There are a few reasons for this,
– Fiber, the next implementation of React’s reconciliation algorithm, will have the capacity to start and stop rendering as required for performance gains. One of the trade-offs of this is that componentWillMount, the other lifecycle event where it might make sense to make an AJAX request, will be “non-deterministic”. What this means is that React may start requesting componentWillMount at various times whenever it feels like it needs to. This would obviously be a bad formula for AJAX requests.
– You can’t support the AJAX request won’t fix before the component mounts. If it did, that would mean that you’d be trying to setState on an unmounted component, which not only won’t work. Doing AJAX in componentDidMount will ensure that there’s a component to update.