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

335
Visualizações
Folleto de React: Cómo actualizar posiciones al polígono

Estoy tratando de hacer un polígono que pueda actualizarse con un clic.

Hice un polígono que contiene una matriz de coordenadas en su definición de posición, e hice esta función llamada change() que se supone que debe insertar las nuevas coordenadas en la matriz.

El problema es que tan pronto como abro la aplicación, solo ingresa las nuevas coordenadas incluso antes de presionar el botón.

Me familiaricé con una pregunta que se hizo aquí sobre cómo hacer una actualización en vivo para un polígono, y esta pregunta recibió una respuesta que muestra cómo hacer algo similar que está bastante cerca.

El problema es que el encuestado usa la class someFunction extends React.Component {} , mientras configuro mi función principal de esta manera: export default function App() Así que ahora quiero saber cómo puedo usar solo el mismo método en la forma "normal" de la función principal.

También encontré otras sugerencias que se usaron para otros casos y ninguna de ellas funcionó para mí.

Aquí está el código:

 import 'leaflet/dist/leaflet.css'; import {MapContainer, TileLayer, Polygon} from 'react-leaflet'; const polygon1 = [ [51.515, -0.09], [51.52, -0.1], [51.52, -0.12], ] const polygon2 = [ [51.535, -0.14], [51.54, -0.13], [51.53, -0.125], ] const positions = [polygon1]; function change () { positions.push(polygon2); } export default function Example() { const classes = useStyles(); return ( <div> <MapContainer center={position} zoom={13} className={classes.map}> <TileLayer attribution='&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" /> <Polygon color={'purple'} positions={positions} /> </MapContainer> <Button onClick={change()}>Add Polygon</Button> </div> ) }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Parece que no está familiarizado con React a juzgar por el código que ha proporcionado

si pasa change() , esto se invocará de inmediato y mutará el estado al presionar la variable de posiciones, esa es la razón por la que está viendo los dos polígonos dibujados en el mapa cuando la página aterriza

 <Button onClick={change()}>Add Polygon</Button>

En cambio, lo que debes hacer es:

  1. Almacenar posiciones en una variable de estado
  2. Cambia de posición sin mutar la variable copiándola
  3. pasar una referencia a la devolución de llamada onClick

Por lo tanto, deberías tener

 export default function Map() { const [positions, setPositions] = useState([polygon1]); function handleClick() { setPositions((prevPositions) => [...prevPositions, polygon2]); } return ( <div> <MapContainer center={[51.515, -0.09]} zoom={13} style={mapStyle}> <TileLayer attribution='&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" /> <Polygon color={"purple"} positions={positions} /> </MapContainer> <button onClick={handleClick}>Add Polygon</button> </div> ); }

Manifestación

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