javascript - Use las funciones del ciclo de vida de componentWillMount o componentDidMount para la solicitud asÃncrona en React
ajax reactjs (3)
Estoy leyendo sobre reaccionar ciclo de vida y me estoy confundiendo un poco. Algunos recomiendan usar componentWillMount para hacer llamadas ajax:
Llamar a setState en componentDidMount desencadenará otra llamada render () y puede dar lugar a un cambio de diseño.
y en otros lugares dice no poner llamadas ajax en el componente WillMount:
https://medium.com/@baphemot/understanding-reactjs-component-life-cycle-823a640b3e8d
... esta función podría terminar siendo llamada varias veces antes de que se llame el renderizado inicial, por lo que podría provocar múltiples efectos secundarios. Debido a este hecho, no se recomienda utilizar esta función para operaciones que causen efectos secundarios.
¿Cual es correcta?
ComponentDidMount es el lugar.
Pero si tiene tiempo intente mirar Redux y realizar las solicitudes en acciones, a medida que su aplicación crezca, ayudará mucho a administrar el estado de la aplicación.
;)
Los documentos de React recomiendan el uso de
componentDidMount
para realizar solicitudes de red
componentDidMount()
se invoca inmediatamente después de montar un componente. La inicialización que requiere nodos DOM debería ir aquí. Si necesita cargar datos desde un punto final remoto, este es un buen lugar para instanciar la solicitud de red.Llamar a
setState()
en este método activará una representación adicional, pero se garantiza que se vaciará durante el mismo tic. Esto garantiza que, aunque se llame dos veces alrender()
en este caso, el usuario no verá el estado intermedio.
Según el caso para
componentWillMount
:
EDITAR:
Este ciclo de vida está en desuso desde
v16.3.0
de react y ya no se recomienda su uso. Sin embargo, se renombró a
UNSAFE_componentWillUpdate
y se espera que funcione hasta al menos
v17
de react
Antes de la v16.3.0
Una llamada asincrónica para recuperar datos no regresará antes de que ocurra el render. Esto significa que el componente se renderizará con datos vacíos al menos una vez.
No hay forma de "pausar" la representación para esperar que lleguen los datos.
No puede devolver una promesa de
componentWillMount
o
setTimeout
un
setTimeout
alguna manera.
La forma correcta de manejar esto es configurar el estado inicial del componente para que sea válido para la representación.
Para resumirlo
En la práctica,
componentDidMount
es el mejor lugar para realizar llamadas para recuperar datos, por dos razones:
-
El uso de DidMount deja en claro que los datos no se cargarán hasta después del procesamiento inicial.
Esto le recuerda que debe configurar el estado inicial correctamente, de modo que no termine con
undefined
estadoundefined
que cause errores. -
Si alguna vez necesita renderizar su aplicación en el servidor, se llamará a
componentWillMount
dos veces, una vez en el servidor y otra vez en el cliente, lo que probablemente no sea lo que desea. Poner el código de carga de datos encomponentDidMount
asegurará que los datos solo se obtengan del cliente.
componentDidMount
es el método de ciclo de vida recomendado para realizar llamadas Ajax como se describe en
sus documentos