3
respostas

Problema com Estados com onBlur

Estou com problema na seguinte etapa do video Atualizando Estados com onBlur

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeComo é pra ser:

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

**Meu código: **

**index js de Pesquisa **

import Input from '../Input' import styled from 'styled-components' import { useState } from 'react' import { livros } from './dadosPesquisa'

const PesquisaContainer = styled.section background-image: linear-gradient(90deg, #002F52 35%, #326589 165%); color: #FFF; text-align: center; padding: 85px 0; height: 470px; width: 100%;

const Titulo = styled.h2 color: #FFF; font-size: 36px; text-align: center; width: 100%;

const Subtitulo = styled.h3 font-size: 16px; font-weight: 500; margin-bottom: 40px;

const Resultado = styled.div` display: flex; justify-content: center; align-items: center; margin-bottom: 20px; cursor: pointer;

p {
    width: 200px;
}

img {
    width: 100px;
}

&:hover {
    border: 1px solid white;
}

`

function Pesquisa() { const [livrosPesquisados, setLivrosPesquisados] = useState([])

return (
    <PesquisaContainer>
        <Titulo>Já sabe por onde começar?</Titulo>
        <Subtitulo>Encontre seu livro em nossa estante.</Subtitulo>
        <Input
            placeholder="Escreva sua próxima leitura"
            onBlur={evento => {
                const textoDigitado = evento.target.value
                const resultadoPesquisa = livros.filter( livro => livro.nome.includes(textoDigitado))
                setLivrosPesquisados(resultadoPesquisa)
            }}
        />
        { livrosPesquisados.map( livro => (
            <Resultado>
                <img src={livro.src}/>
                <p>{livro.nome}</p>
            </Resultado>
        ) ) }
    </PesquisaContainer>
)

}

export default Pesquisa

**dadosPesquisa

3 respostas

Oii, Renato. Tudo bem?

Preciso de mais informações para entender sua dúvida.Siga as orientações do guia de como fazer uma boa pergunta no fórum e me retorne com o que foi pedido.

Abraço.

Olá Lorena! , tudo bem... Acho meio confuso também. Na aula Atualizando estados com onBlur apresenta a experiência de digitar um texto: "Lid" e no console imprimir uma lista com os elementos. no meu caso, não esta aparecendo.

Para verificar meu código: https://github.com/terceirolho/BooksProject

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

Como deveria imprimir:

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

Oi Renato!

Obrigada por compartilhar!

O que acontece é que você não colocou o console.log pra conseguir ver essa chamada de livrosPesquisados.

Faça assim, coloque o console.log(livrosPesquisados) antes do return:

function Pesquisa() {
    const [livrosPesquisados, setLivrosPesquisados] = useState([])

    console.log(livrosPesquisados)

    return (
        <PesquisaContainer>
            <Titulo>Já sabe por onde começar?</Titulo>
            <Subtitulo>Encontre seu livro em nossa estante.</Subtitulo>
            <Input
                placeholder="Escreva sua próxima leitura"
                onBlur={evento => {
                    const textoDigitado = evento.target.value
                    const resultadoPesquisa = livros.filter( livro => livro.nome.includes(textoDigitado))
                    setLivrosPesquisados(resultadoPesquisa)
                }}
            />
            { livrosPesquisados.map( livro => (
                <Resultado>
                    <img src={livro.src}/>
                    <p>{livro.nome}</p>
                </Resultado>
            ) ) }
        </PesquisaContainer>
    )
}

export default Pesquisa

Que assim irá aparecer a lista.

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

Um abraço e bons estudos.