1
resposta

Ordem parametrizada: nome, distancia ou estrelas

carregaDados.js

import produtores from '../mocks/produtores';
import topo from '../mocks/topo';

export const carregaProdutores = (ordenarPor='nome') => {
    if (ordenarPor === 'nome') {
        produtores.lista.sort((atual, proximo) => {
            if (atual.nome > proximo.nome) {
                return 1;
            }
            else if (atual.nome < proximo.nome) {
                return -1;
            }
            return 0;
        });
    }
    else if (ordenarPor === 'distancia') {
        produtores.lista.sort((atual, proximo) => atual.distancia - proximo.distancia);
    }
    else if (ordenarPor === 'estrelas') {
        produtores.lista.sort((atual, proximo) => atual.estrelas - proximo.estrelas);
    }
    return produtores;
}

export const carregaTopo = () => {
    return topo;
}

useProdutores.js

import { useState, useEffect } from 'react';

import { carregaProdutores } from '../servicos/carregaDados';


export default function useProdutores() {

    const [titulo, setTitulo] = useState('');
    const [lista, setLista] = useState([]);

    useEffect(() => {
        const retorno = carregaProdutores('distancia');
        setTitulo(retorno.titulo);
        setLista(retorno.lista);
    }, []);


    return [titulo, lista];
}
1 resposta

Olá, Franco! Tudo certo?

Gostei bastante da sua solução! Foi além do proposto no desafio, usando as condicionais para definir a ordenação, o que ficou muito bom.

Continue praticando e evoluindo na sua jornada.

Bons estudos e até mais!