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

148
Visualizações
¿Cómo hacer una solicitud de recuperación de API al hacer clic en el botón Reactjs?

Mi código hasta ahora ... Estoy tratando de tener un cuadro de texto y una lista desplegable del año que cuando hago clic en el botón de búsqueda pasa 2 parámetros en una solicitud de búsqueda de API. He cargado los años en el cuadro desplegable y tengo una lista completa de nombres de elementos que luego convertiré en un cuadro de búsqueda de estilo de autocompletar. pero por ahora solo quiero enviar los 2 datos seleccionados a una solicitud de búsqueda de API donde se requiere el nombre del elemento y el año es opcional. quiero llenar la matriz itemList con los datos de la solicitud de recuperación.

 const App = () => { const [YearList, setYearsData] = useState([]); const [NamesList, setNameData] = useState([]); //Get YearsList data to populate dropbox useEffect(() => { const fetchItemData = async () => { try { fetch("http://localhost:56384/api/YearList") .then(response => response.json()) .then(itemData => setYearsData(itemData)); } catch(error) { console.log("Failed to fetch from Amazon DB", error); } }; fetchItemData() }, []); //Get NamesList Data for autocomplete textbox useEffect(() => { const fetchItemData = async () => { try { fetch("http://localhost:56384/api/NameList") .then(response => response.json()) .then(itemData => setNameData(itemData)); } catch(error) { console.log("Failed to fetch from Amazon DB", error); } }; fetchItemData() }, []); let [year, setYear] = useState(null) let handleYearChange = (e) => { setYear(e.target.value) } let [searchQuery, setSearchQuery] = useState("") let handleSearchChange = (e) => { setSearchQuery(e.target.value) } //Fetch reqiest that is not working const [itemList, setItemList] = useState([]); useEffect(() => { const fetchItemData = async () => { try { fetch(`http://localhost:56384/api/RecallSearch?searchText=${searchQuery}&year=${year}`) .then(response => response.json()) .then(itemData => console.log(itemData)); } catch(error) { console.log("Failed to fetch from Amazon DB", error); } }; fetchItemData() }, []); return ( <div className="App"> <TitleCard /> <input type="text" value={searchQuery} onChange={handleSearchChange} placeholder='Search Amazon Items'/> <select onChange={handleYearChange}> <option value="-- Select year --"> -- Select a Year -- </option> {YearList.map((year) => <option key={year} value={year}>{year}</option>)} </select> //Button that isnt working <button>Search</button> </div> ); } export default App;
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

  1. Está utilizando funciones de async await incorrectamente
  2. Puede simplificar su código y usar una sola llamada useEffect
  3. Debe agregar un oyente onClick al botón

Intenta cambiar tu código así:

 const App = () => { const [YearList, setYearsData] = useState([]); const [NamesList, setNameData] = useState([]); const [itemList, setItemList] = useState([]); let [year, setYear] = useState(null); let handleYearChange = (e) => { setYear(e.target.value); }; let [searchQuery, setSearchQuery] = useState(''); let handleSearchChange = (e) => { setSearchQuery(e.target.value); }; let [year, setYear] = useState(null); let handleYearChange = (e) => { setYear(e.target.value); }; let [searchQuery, setSearchQuery] = useState(''); let handleSearchChange = (e) => { setSearchQuery(e.target.value); }; const fetchYearList = async () => { try { const response = await fetch('http://localhost:56384/api/YearList'); setYearsData(await response.json()); } catch (error) { console.log('Failed to fetch from Amazon DB', error); } }; const fetchNameList = async () => { try { const response = await fetch('http://localhost:56384/api/NameList'); setNameData(await response.json()); } catch (error) { console.log('Failed to fetch from Amazon DB', error); } }; const fetchItemData = async () => { try { const response = await fetch( `http://localhost:56384/api/RecallSearch?searchText=${searchQuery}&year=${year}` ); const itemData = await response.json(); setItemList(itemData); } catch (error) { console.log('Failed to fetch from Amazon DB', error); } }; const handleSearch = () => { fetchItemData(); }; useEffect(() => { fetchYearList(); fetchNameList(); fetchItemData(); }, []); return ( <div className='App'> <TitleCard /> <input type='text' value={searchQuery} onChange={handleSearchChange} placeholder='Search Amazon Items' /> <select onChange={handleYearChange}> <option value='-- Select year --'> -- Select a Year -- </option> {YearList.map((year) => ( <option key={year} value={year}> {year} </option> ))} </select> //Button that isnt working <button onClick={handleSearch}>Search</button> </div> ); }; export default App;
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