reactjs - getderivedstatefromprops - react lifecycle cheat sheet
¿Por qué los documentos React recomiendan hacer AJAX en componentDidMount, no componentWillMount? (3)
De acuerdo con la configuración de la documentación, el estado en
componentWillMount
no activará una nueva representación.
Si la llamada AJAX no se está bloqueando y usted devuelve una
Promise
que actualiza el estado del componente en caso de éxito, hay posibilidades de que la respuesta llegue una vez que el componente se haya procesado.
Como
componentWillMount
no activa una nueva representación, no tendrá el comportamiento que esperaba, que es el componente que se representa con los datos solicitados.
Si usa 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 probablemente cambiará los accesorios. finalmente.
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?
También tuve el mismo problema al principio.
Decidí intentar hacer solicitudes en
componentWillMount
pero termina en varios problemas pequeños.
Estaba activando el procesamiento cuando la llamada ajax termina con nuevos datos.
En algún momento, la representación del componente tomó más tiempo que obtener la respuesta del servidor y en este punto la devolución de llamada ajax estaba activando la representación en el componente desmontado.
Este es un caso marginal, pero probablemente haya más, por lo que es más seguro apegarse a
componentDidMount
.
componentDidMount
es para efectos secundarios.
Agregar oyentes de eventos, AJAX, mutar el DOM, etc.
componentWillMount
rara vez es útil;
especialmente si le interesa la representación del lado del servidor (agregar escuchas 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 tiene el mismo propósito que el constructor.
Permanecerá en los componentes de
createClass
.