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

285
Vistas
NextJS - Reaccionar google maps api - bucle infinito

tratando de averiguar por qué mi mapa de componentes de la función de reacción tiene un bucle infinito y vuelve a representar el mapa continuamente. He mirado esto por un tiempo y estoy pensando que tiene que ver con useEffects, pero parece que no puedo arreglarlo. Se adjunta una captura de pantalla del error y el código del componente del mapa. déjame saber si necesitas ver otro código

captura de pantalla del error

 useJsApiLoader, GoogleMap, DirectionsRenderer, } from "@react-google-maps/api"; import { useEffect, useState } from "react"; import { useRouter } from "next/router"; import { Box } from "@chakra-ui/react"; import { useDebouncedCallback } from "../../hooks/useDebouncedCallback"; export default function Map(props) { const router = useRouter(); const { isLoaded } = useJsApiLoader({ googleMapsApiKey: process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY, id: "google-map-script", }); const [map, setMap] = useState(/** @type google.maps.Map */ (null)); const [directionsResponse, setDirectionsResponse] = useState(null); async function calculateRoute() { /* eslint-disable */ const directionsService = new google.maps.DirectionsService(); /* eslint-disable */ const results = await directionsService.route({ origin: props.from, destination: props.to, /* eslint-disable */ travelMode: google.maps.TravelMode.DRIVING, }); console.log(results); setDirectionsResponse(results); } useEffect(() => { console.log("useEffect fired!", { asPath: router.asPath }); calculateRoute(); }, [router.asPath]); useEffect(() => { calculateRoute(); }); if (!isLoaded) { return <div>ligma</div>; } return ( <GoogleMap center={directionsResponse} zoom={15} mapContainerStyle={{ width: props.width, height: props.height, borderRadius: "20px", }} options={{ zoomControl: false, streetViewControl: false, mapTypeControl: false, fullscreenControl: false, }} onLoad={(map) => setMap(map)} > <DirectionsRenderer directions={directionsResponse} /> </GoogleMap> ); }
about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Para abordar su inquietud con respecto al ciclo, comenzaría eliminando el duplicado:

 useEffect(() => { calculateRoute(); });

El error que se muestra especifica que las coordenadas LatLngLiteral recibidas cuando la API intenta centrar el mapa no son un número. Considere usar console.log(isNan(directionsResponse)) para verificar si el valor es un número, que es necesario para que se resuelva el error de setCenter . Si directionsResponse no es un número, considere usar center=parseFloat(directionsResponse) . Este problema aparece separado de su problema de bucle.

about 4 years ago · Santiago Gelvez 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