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

133
Vistas
Cómo evitar URL de imágenes duplicadas al hacer clic en Redux

Estoy trabajando en una aplicación React-Redux.

Obtengo una URL de imagen aleatoria de la API de Unsplash y tengo dos opciones: aprobarla o rechazarla. onApprove la imagen aterriza en una galería.

Noté que si hago clic en el botón Aprobar rápidamente varias veces, coloco imágenes duplicadas en mi galería. Sé que en React puedes hacer algo como esto para poder manejar acciones.

 setState(prevState) => {return prevState + 1}

Pero aquí viene Redux. Uso createSlice() para encargarme de los reductores. Aquí está el fragmento de código con la funcionalidad

 const imagesSlice = createSlice({ name: 'images', // The intial state value we pass for the reducers. A state the first time it gets called. initialState, reducers: { imageApproved(state, action) { state.approvedImageList.push(action.payload); }, }, });

Y luego envío una acción en mi pie de página donde los botones son:

 function Footer({ randomImageUrl, generateNewRandomImage }) { const dispatch = useDispatch(); function onApprove() { dispatch(imageApproved(randomImageUrl)); generateNewRandomImage(); } const showButton = useSelector((state) => state.buttons.showButton); return ( <FooterWrapper> {showButton ? ( <FooterCopy> Click on the + in order to get image recommendations </FooterCopy> ) : ( <ButtonWrapper> <Button bgColorOnHover='true' onClick={onApprove}> APPROVE </Button> </ButtonWrapper> )} </FooterWrapper> ); }

Entonces, ¿cómo puedo evitar la duplicación de imágenes onClick? ¡Gracias!

aquí hay un ejemplo con duplicados

ADEMÁS: Tengo una pregunta:

cuando obtengo datos de la API, solo obtengo imageUrl. Eso significa que no estoy verificando Ids en mi código, sino solo imageUrls. No sé si también podría ser el motivo de los duplicados, pero ¿tengo que buscar los ID y verificarlos con .includes() también?

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

0

Puede verificar la nueva URL en la lista de imágenes approvedImageList o no antes de presionar:

 imageApproved(state, action) { const url = action.payload; if(!state.approvedImageList.includes(url)){ state.approvedImageList.push(url); } },
about 4 years ago · Juan Pablo Isaza Denunciar

0

nada redux específico aquí:

 imageApproved(state, action) { if (!state.approvedImageList.includes(action.payload)) { state.approvedImageList.push(action.payload); } },
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