Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

290
Vistas
UseState: llamada de gancho no válida. Los ganchos solo se pueden llamar dentro del cuerpo de un componente de función
  • Estoy usando useState para actualizar la respuesta de la API.

  • Luego, tomo los datos que necesito y los mapeo en una nueva matriz (arr)

  • Después del paso anterior, estoy actualizando el gancho useState "setData" para usar el estado "datos"

  • Pero me está dando el error "Llamada de gancho no válida. Los ganchos solo se pueden llamar dentro del cuerpo de un componente de función"

Aquí está la parte del código con el que tengo problemas

 import {useEffect, useState} from 'react' import logo from './logo.svg'; import './App.css'; import axios from 'axios' import ReactSearchBox from 'react-search-box' import { set } from 'express/lib/application'; function App() { let [data, setData] = useState() useEffect(onMount,[]) function onMount(){ axios.get('https://restcountries.com/v3.1/all').then(res=>{ let arr = res.data.map((c)=>{ return {key:c.name.common, value: c.name.common} }) setData(arr) }) }

Mi código de página completa

 import "./styles.css"; import axios from 'axios' import ReactSearchBox from 'react-search-box' import {useEffect, useState} from 'react' export default function App() { let [data, setData] = useState() useEffect(onMount,[]) function onMount(){ axios.get('https://restcountries.com/v3.1/all').then(res=>{ let arr = res.data.map((c)=>{ return {key:c.name.common, value: c.name.common} }) setData(arr) }) } return ( <div className="App"> <h1>Countries</h1> {data.length>0 ? <ReactSearchBox placeholder="Placeholder" value="Doe" data={data} callback={(record) => console.log(record)} />: null} </div> ); }

Imagen de error

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El react-search-box que está utilizando utiliza React 17 . Esto no es compatible con React 18. Como resultado, una vez que se completa el estado de sus data y se invoca <ReactSearchBox , se genera un error.

Su código en sí está bien, es la dependencia el problema.

O:

  • fork react-search-box y actualícelo para que sea compatible con React 18, y use esa versión en su lugar
  • degradar su versión de React a React 17
  • cree su propio cuadro de búsqueda para eliminar la dependencia de react-search-box
  • espere a que los mantenedores de react-search-box se actualicen a React 18
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda