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

Duvida sobre o uso do hook

Boa tarde professor! Eu resolvi colocar em pratica o uso do hooks useState para renderizar imagens de um site de venda de tênis, eu estou com dificuldade de fazer a imagem renderizar depois dos filtros , no console do navegador funciona mas no navegador não. segue o código , me ajudaa por favor kkk já quebrei a cabeça 4 dias!!

link do repositório: https://github.com/Felipewiiu/Solado.git

eu não consigo setar o estado do usestateInsira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

5 respostas

Opa, Felipe!

Vou clonar seu projeto aqui e já te digo!

Vinícius, a logica está na pasta , página inicial, que redireciona para os filtros chamados de tags

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Aqui, Felipe... você precisa fazer esse ajuste:

  function maiorPreco(tag) {
    const filtroMaiorPreco = produto.sort((a, b) => parseInt(a.preco) - parseInt(b.preco))
    return (
      tag.tag === 'Maior preço' ? setCards([...filtroMaiorPreco]) : ''
    )
  }

O método de array que ordena os elementos, o sort, retorna uma referência para o mesmo objeto. Então, o React acredita que nada mudou e não faz um novo render. Então, precisamos criar um novo array, fazendo spread dos elementos já ordenados.

Um outro detalhe é que você não precisa retornar nada nessa função. Como você vai ter uma lógica diferente para cada tipo de filtro, que tal se você fizesse assim:

  function ordernarListaPorTag(tag) {
    switch (tag.tag) {
      case 'Maior preço':
        const filtroMaiorPreco = produto.sort((a, b) => parseInt(a.preco) - parseInt(b.preco))
        setCards([...filtroMaiorPreco]) 
        break;
      case 'Menor preço':
        const filtroMenorPreco = produto.sort((a, b) => parseInt(b.preco) - parseInt(a.preco))
        setCards([...filtroMenorPreco]) 
        break;

      // demais filtros aqui
      default:
        break;
    }
  }

Espero que tenha ajudado!

Cara kkk nem sei como te agradecer, tu é feraaa, obrigado pelo suporte nota 10!!

Tá em casa :) Precisando de qualquer coisa, não deixe de postar ;)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software