No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

20 Días
0 Hrs
49 Min
3 Seg

Error: carga duplicada de datos

10/17
Recursos

Aportes 11

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Esta es mi estructura de carpetas y código:
.
Mi repositorio
.
Commit Actual

Aunque esta solución evita el problema del duplicado, es un poco no muy óptimo porque cada vez que vuelves al home estás haciendo la petición a la api. Si es una app con miles de usuarios al mismo tiempo conectados, debemos tener un super back que pueda soportar toda esta cantidad de peticiones al mismo tiempo.
.
Una manera también muy sencilla es que el llamado a la api solo se haga una sola vez. ¿Cómo podemos implementar esto? Hay varias maneras de hacerlo. Una muy sencilla, sería, por ejemplo, preguntando si en nuestra section de categorías contamos con ‘hijos’ nodos. Si no contamos con hijos nodos quiere decir que es la primera carga y por ende se debe ejecutar la llamada a la api, de lo contrario, sí ya hay hijos nodos no es necesario hacer la petición.
.

const childrenCategoriesPreview = Array.from(categoriesPreviewList.children);
  if(!childrenCategoriesPreview.length){
    getTrendingMoviesPreview();
    getCategoriesMoviesPreview();
  }

.
Agregando este condicional evito el constante llamado a la api.

Un pequeño aporte, nada relevante pero quizás a alguien le interese jaja…

Si usaron el parametro de lenguaje de la API, para colocarlo en español

params: {
        'api_key': API_KEY,
        'language': 'es-VE',
    },

Yo soy de Venezuela, por eso coloque el “VE”, si son de México por ejemplo seria “es-MX”, de este modo la API arrojara los datos en el idioma deseado, y también hace diferencia en las imágenes de las películas, como saben en otros paises las imágenes de las carteleras de las películas suelen variar, al igual que varia la tendencia de las películas.

Otro detalle es que cuando se traduce en la parte de categorias, la categoría de “Suspense”… no se traduce bien y queda igual. Si quieren arreglar esto pueden solucionarlo de la siguiente manera:

const categoryTitleText = document.createTextNode(`${
            category.name == 'Suspense' ? 'Suspenso' : category.name
        }`);

No se que tan buena practica sea, pero lo que hice desde el inicio fue utilizar los template literals para crear todo el html y de ahi hacer una unica inserción al Dom con el innerHtml

 let moviesInHtml=`${movies.map(movie=>`
    <div class="movie-container">
        <img src="https://image.tmdb.org/t/p/w300${movie.poster_path}" class="movie-img"
        alt="${movie.original_title}" />
    </div>
    
    `).join("")}`
    
    trendingMoviesPreviewList.innerHTML=moviesInHtml

Hola! Yo solucione eso sin darme cuenta del error.
Solo puse el
getTrendingMoviesPreview();
getCategoriesPreview();
al final del navigation.js cuando estaba ordenando el codigo sin darme cuenta que se repetian antes de cambiarlo. y fue en esta clase que me entere que se repetian si no lo hubiera puesto al final.

Consejo si es que han copiado el proyecto desde un inicio del profesor:

Respira y no te rindas, es díficll acomodar la vista desktop pero si respiras por 5 segundos lo lograrás estilizar a tu manera.

lo solucione así:
categoriesPreviewList.innerHTML = ‘’;

No se si está mal, pero antes de ver la clase solucioné el bug poniendo el innerHTML = “” en la funcion de homePage en navigation.js

Yo lo había solucionado antes de ver esta clase, simplemente con una variable llamada isLoaded en el archivo navigation.js
¿Tiene desventajas mi solución?

Inicializo la variable como falsa y después la vuelvo true y de ahí ya no vuelve a cambiar y no actualiza ni duplica el contenido hasta que se recargue la página.
fn mainpage()

function mainPage(){
    console.log('Estás en la main page');
    hideFromDom('movie-page');
    //hideFromDom('trending-page');
    //hideFromDom('search-page');
    //hideFromDom('category-page');
    showElementsOnDom('main-page');

    if (!isLoaded) {
        getTrendingMoviesPreview('main-trending-movies');
        getLatestMoviesPreview('main-latest-movies');

        isLoaded = true; //evitar volver a cargar cuando se navega de vuelta.
    }
}

En este video veo que el profesor respondió la segunda pregunta que hice en el video anterior: borrar las variables que estaban dentro de getTrendingMoviesPreview() y getCategoriresPreview() porque ya habían sido establecidas en el archivo node.js.

estoy podríamos llamarla una SPA vanilla, ya que la navegacion de la pagina web se mantiene en el mismo URL