Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] os vídeos da aplicação não estão renderizando após declaração de variável global

Anteriormente, no componente < Videos />, eu não estava conseguindo acessar listaVideos com .map, estava aparecendo como undefined, mesmo declarando a variável no componente pai e passando como prop. Para que isso não ocorresse, declarei listaVideos usando o createContext para fazer uma variável global. Agora, os cards de vídeo não estão aparecendo visualmente no site e não estou conseguindo resolver. Mesmo reiniciando o JSON server a página continua na mesma.

Repositório: https://github.com/vana-cyber/aluraflix

2 respostas
solução!

Oi, Geovana. Tudo bem?

Conferi o seu código e há alguns pontos a ajustar:

1 - VideoContext:

Passei a requisição para dentro do context, assim a lista de videos é passada para a variável listaVideos:

import React, { createContext, useState, useEffect } from 'react';

// Criação do contexto
export const VideoContext = createContext();

// Provedor do contexto
export const VideoProvider = ({ children }) => {
    const [listaVideos, setListaVideos] = useState([]);

    useEffect(() => {
        fetch('http://localhost:3000/sections')
            .then(response => response.json())
            .then(data => setListaVideos(data))
            .catch(error => console.error('Erro ao buscar vídeos:', error));
    }, []);

    return (
        <VideoContext.Provider value={{ listaVideos, setListaVideos }}>
            {children}
        </VideoContext.Provider>
    );
};

2 - map:

Acho que entendi qual é a ideia e fiz uns ajustes para mapear o array de videos com base em suas respectivas seções:

return (
        <div>
            {listaVideos.map((secao) => (
                <div key={secao.id}>
                    <h2>{secao.section}</h2>
                    <ListaSeções>
                        {secao.videos.map((video) => (
                            <li key={video.id}>
                                <CardVideo>
                                    <a href={video.url} target="_blank" rel="noopener noreferrer">
                                        <img src={video.thumbnail} alt={video.title} />
                                    </a>
                                    <figcaption>
                                        <h3>{video.title}</h3>
                                        <BotaoCard />
                                    </figcaption>
                                </CardVideo>
                            </li>
                        ))}
                    </ListaSeções>
                </div>
            ))}
        </div>
    );

No entanto, ainda há alguns ajustes a serem feitos com relação aos estilos. Se ainda precisar de ajuda com algo, não hesite em me chamar!

Espero ter ajudado!

Siga firme nos seus estudos e conte com o fórum sempre que precisar!

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Olá, Mike! Obrigada por responder. Eu atualizei o código e digitei o comando para rodar o JSON Server, mas o conteúdo ainda não está aparecendo. No console apareceu a seguinte mensagem: Insira aqui a descrição dessa imagem para ajudar na acessibilidade