Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

163
Visualizações
¿Cómo puedo usar una variable useState dentro de uesEffect?

Estoy tratando de acceder a la consulta de la variable query en mi función dentro de useEffect. Recibo el error React Hook useEffect has a missing dependency: 'query'. Either include it or remove the dependency array.

Creo que el problema es que estoy configurando la variable de consulta (useState) cuando el usuario escribe en la barra de búsqueda y luego intento acceder a esta nueva variable de query en el enlace useEffect.

Quiero obtener la API después de unirme a la URL de la API y el contenido de la consulta, pero después de ejecutar setQuery, que es después de que el usuario escriba en la barra de búsqueda. ¿Cómo puedo hacer esto?

Gracias Heres el código; observe la variable de query .

 import React, { useState, useEffect } from "react"; import Grid from '@mui/material/Grid'; import PaperCard from '../components/ResearchPaperCard'; const apiUrl = "http://127.0.0.1:8000/api/search/?search="; function SearchedPapers(){ const [query, setQuery] = useState(""); const [apiData, setApiData] = useState([]) useEffect(() => { const getFilteredItems = async (query) => { let response = await fetch(apiUrl+query); let papers = await response.json(); setApiData(papers); if (!query) { return papers } return papers; } getFilteredItems(query); },[]); console.log(apiData) return ( <div className='SearchedPapers'> <label> Search </label> <input type='text' onChange={e => setQuery(e.target.value)}/> <div> {apiData.map((paper) => { return ( <Grid key={paper.title}> <PaperCard title={paper.title} abstract={paper.abstract}/> </Grid> ) })} </div> </div> ) } export default SearchedPapers;
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

En este momento, su useEffect se activa cada vez que su componente se monta, así que básicamente cuando alguien llega a esta pantalla. En este momento, su estado de consulta está vacío.

Intenta agregar esto:

 useEffect(() => { const getFilteredItems = async (query) => { let response = await fetch(apiUrl+query); let papers = await response.json(); setApiData(papers); if (!query) { return papers } return papers; } getFilteredItems(query); },[query]) - - - - > here

Al hacerlo, su useEffect se activará solo y cada vez que cambie el estado de su consulta

about 4 years ago · Juan Pablo Isaza Relatório

0

Debe incluir la consulta en su matriz de dependencia, es decir, el segundo argumento de su enlace UseEffect o eliminarla. Cuando está (matriz) vacía, useEffect solo se renderizará una vez, es decir, cuando su página se renderice por primera vez, pero cuando se elimine, useEffect se ejecutará después de la primera renderización y después de cada actualización. Cuando se especifica como si pusiera 'consulta' en la matriz de dependencia, solo se ejecutará siempre que haya un cambio en el estado de 'consulta'.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda