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

98
Vistas
Hay un problema con la función de eliminación del componente de reacción implementado a través del método de mapa

Estoy desarrollando usando reaccionar. Está en el proceso de obtener la información contenida en la base de datos y mostrarla en la página web a través del método del mapa. Si elimina una pieza de información utilizando onclick o el método onClose proporcionado por antd, la información también se elimina de la base de datos. en la base de datos, la función funcionó correctamente. pero se elimina la información en la parte inferior, no la información eliminada en la página web. Si actualizo el sitio web, se muestra normalmente, pero no quiero usar la función de recarga de la ventana. Me pregunto por qué sucede esto y cuál es la solución. ¡gracias!

AlertPage

 import React, { useState } from "react"; import useSWR from "swr"; import axios from "axios"; import AlertComponent from "./Sections/AlertComponent"; const fetcher = async (url) => await axios.get(url).then((response) => JSON.parse(response.data.alerts)); function AlertPage() { const { data = [], error } = useSWR("/api/streaming/getAlerts", fetcher, { refreshInterval: 1000, }); const onClose = (data) => { axios.post(`/api/streaming/removeAlerts/${data._id.$oid}`).then(() => { console.log(`${data._id.$oid} deleted`); }); }; const renderAlerts = data.map((alert, index) => { return ( <div key={index}> <AlertComponent alert={alert} index={index} onClose={onClose} /> </div> ); }); if (error) return <div>failed to load</div>; if (data === []) return <div>loading...</div>; return <div>{renderAlerts}</div>; } export default AlertPage;

AlertComponent

 import React, { useState } from "react"; import { Alert } from "antd"; import Marquee from "react-fast-marquee"; function AlertComponent(props) { const [alert, setalert] = useState(props.alert); const [index, setindex] = useState(props.index); return ( <div className="alert" key={index} style={{ display: "flex" }} onClick={() => { props.onClose(alert); }} > <Alert message={`${alert.data.timestamp.$date.substr(0, 19)}`} description={ <Marquee pauseOnHover speed={40} gradient={false}> {`<${alert.data.location}> <${alert.data.name}> <${alert.data.contents}> detected`} </Marquee> } banner /> </div> ); } export default AlertComponent;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Esto podría estar sucediendo debido al caché local mantenido por swr y dado que no está recuperando los datos después de la eliminación, los cambios no se reflejan en el DOM.

Una opción es activar una recuperación manual para recuperar los datos más actualizados. Podríamos lograr eso cambiando las siguientes líneas:

 const { data = [], error, mutate } = useSWR("/api/streaming/getAlerts", fetcher, { refreshInterval: 1000 });

...

 axios.post(`/api/streaming/removeAlerts/${data._id.$oid}`).then(() => { mutate("/api/streaming/getAlerts"); });

otro enfoque sería confiar en la estrategia de actualización optimista de swr, aquí hay un ejemplo

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