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

[Dúvida] O arquivo index.tsx do Componente ListaRestaurante está atualizado?

Fui comparar alguns arquivos tsx do meu projeto com os que estão no GitHub, e vi que o arquivo index.tsx do componente ListaRestaurante que está no GitHub está como fizemos na aula 1, mas depois houveram muitas mudanças no código desse arquivo, e eu queria poder conferir. Aqui está o meu código desse componente:

import { useEffect, useState } from 'react';
import IRestaurante from '../../interfaces/IRestaurante';
import style from './ListaRestaurantes.module.scss';
import Restaurante from './Restaurante';
import axios, { AxiosRequestConfig } from 'axios';
// import { nodeModuleNameResolver } from 'typescript';
import { IPaginacao } from '../../interfaces/IPaginacao';

interface IparametrosDeBusca {
  ordering?: string;
  search?: string;
}

const ListaRestaurantes = () => {

  const [restaurantes, setRestaurantes] = useState<IRestaurante[]>([]);
  const [proximaPagina, setProximaPagina] = useState('');
  const [paginaAnterior, setPaginaAnterior] = useState('');
  const [busca, setBusca] = useState('');
  const [ordenacao, setOrdenacao] = useState('');

  const carregarDados = (url: string, opcoes: AxiosRequestConfig = {}) => {
    axios.get<IPaginacao<IRestaurante>>(url, opcoes)
      .then(resposta => {
        setRestaurantes(resposta.data.results);
        setProximaPagina(resposta.data.next);
        setPaginaAnterior(resposta.data.previous);
      }).catch(erro => {
        console.log(erro);
      })
  }

  // A cada busca, montamos um objeto de opções:
  const buscar = (evento: React.FormEvent<HTMLFormElement>) => {
    evento.preventDefault();
    const opcoes = {
      params: {

      } as IparametrosDeBusca
    }
    if (busca) {
      opcoes.params.search = busca;
    }
    carregarDados('http://localhost:8000/api/v1/restaurantes/', opcoes);
  }

  useEffect(() => {
    // obter restaurantes:
    axios.get<IPaginacao<IRestaurante>>('http://localhost:8000/api/v1/restaurantes/')
      .then(resposta => {
        console.log(resposta);
        setRestaurantes(resposta.data.results);
        setProximaPagina(resposta.data.next);
      }).catch(erro => {
        console.log(erro);
      })
  }, []);

  return (
    <section className={style.ListaRestaurantes}>
      <h1>Os restaurantes mais <em>bacanas</em>!</h1>
      <form onSubmit={buscar}>
        <div>
          <label htmlFor='select-ordenacao'>Ordenação</label>
          <select
            name='select-ordenacao'
            id='select-ordenacao'
            value={ordenacao}
            onChange={evento => setOrdenacao(evento.target.value)}
          >
            <option value=''>Padrão</option>
            <option value='id'>Por ID</option>
            <option value='nome'>Por nome</option>
          </select>
        </div>
        <div>
          <button type='submit'>Buscar</button>
        </div>
      </form>
      {restaurantes?.map(item => <Restaurante restaurante={item} key={item.id} />)}
      {<button onClick={() => carregarDados(paginaAnterior)} disabled={!paginaAnterior}>
        Página anterior
      </button>}
      {<button onClick={() => carregarDados(proximaPagina)} disabled={!proximaPagina}>Próxima página</button>}
    </section>
  );
}

export default ListaRestaurantes;
2 respostas
solução!

Olá, Mylena. Tudo bem?

O seu código parece estar correto sim, essa diferença entre o seu código e o repositório aconteceu porque o código que faz a ordenação dos restaurantes ficou como desafio para o aluno. Você pode conferir o seu código com o do instrutor nessa atividade.

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

Obrigada!