Uso useState en lugar de useEffect y funciona bien para mostrar datos (¿por qué?)
React.useState(() =>getMovies(), [])
Nota: agregué console.log y obtengo los mismos resultados
Cuando se pasa una función a useState , esto le indica a React que use la inicialización diferida : la función se invocará para calcular el valor inicial solo cuando se monte el componente.
Si el valor que se va a poner en el estado se puede calcular/recuperar sincrónicamente , este es probablemente el mejor patrón de diseño que se puede usar: es corto y no requiere que usted diferencie más adelante si el valor del estado no está definido o está poblado.
const [stateValue, setStateValue] = useState(calculateExpensiveInitialStateValue); El momento de usar useEffect es cuando el valor que se completará no se puede calcular sincrónicamente, en cuyo caso el mejor enfoque es tener useState (para el estado) y useEffect (para indicar que desea ejecutar una función para recuperar el indique el valor solo una vez).
Si bien teóricamente puedes tener una línea como
React.useState(() =>getMovies(), [])es bastante confuso, porque
useState no acepta una matriz de dependencia de segundo argumento useEffect es más adecuado para la tarea porque no tiene un valor de retorno (a diferencia useState ) y es más flexible porque acepta una matriz de dependencia. useEffect indica mucho más claramente a los lectores del código "Esta devolución de llamada debe ejecutarse solo cuando cambia la matriz de dependencia".