¿Por qué los documentos React recomiendan hacer AJAX en componentDidMount, no componentWillMount?

El título lo dice todo. Entiendo por qué componentDidMount es apropiado para cualquier cosa que requiera acceso DOM, pero una solicitud AJAX no necesariamente o por lo general necesita esto.

¿Lo que da?

componentDidMount es para efectos secundarios. Agregar oyentes de eventos, AJAX, mutando el DOM, etc.

componentWillMount rara vez es útil; especialmente si le importa el procesamiento del lado del servidor (agregar detectores de eventos causa errores y fugas, y muchas otras cosas que pueden salir mal).

Se habla de eliminar componentWillMount de los componentWillMount de la clase ya que cumple la misma función que el constructor. Permanecerá en los componentes de createClass .

Tuve el mismo problema al principio, también. Decidí probar haciendo solicitudes en componentWillMount pero terminó en varios pequeños problemas.

Estaba activando el renderizado cuando la llamada ajax termina con nuevos datos. En algún punto, la renderización del componente tomó más tiempo que la respuesta del servidor y en este punto, la callback ajax estaba activando el renderizado en el componente desmontado. Es una especie de caso extremo, pero probablemente haya más, por lo que es más seguro seguir con componentDidMount .

Según la configuración de documentación, el estado en componentWillMount no activará una nueva representación. Si la llamada AJAX no está bloqueando y usted devuelve una Promise que actualiza el estado del componente en caso de éxito, existen posibilidades de que la respuesta llegue una vez que se haya procesado el componente. Como componentWillMount no desencadena una repetición, no tendrá el comportamiento que esperaba, que es el componente que se está procesando con los datos solicitados.

Si utiliza cualquiera de las bibliotecas de flujo y los datos solicitados terminan en la tienda a la que está conectado el componente (o hereda de un componente conectado), esto no será un problema ya que la recepción de esos datos, muy probablemente, cambiará los accesorios finalmente.