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

136
Vistas
¿Por qué cambia el valor de retorno cuando uso el componente React-icon para mi botón?

Quiero eliminar una lista y diseñar ese botón con un icono. Si solo tengo "eliminar" como mi botón, mi onClick devuelve la ID como se esperaba. Sin embargo, cuando trato de usar un componente para mi botón, devuelve un objeto extraño.

Intenté usar diferentes elementos en lugar de un <Button/> y diferentes bibliotecas de íconos, pero el resultado es el mismo. Así es como estaba importando el componente y estoy usando componentes con estilo si eso importa

 import React from "react"; import { Draggable } from "react-beautiful-dnd"; import {BsXCircle} from "react-icons/bs" import styled from 'styled-components'

A continuación se muestra mi código para mi componente que representa el título de la lista y un botón que eliminaría la lista:

 <div {...provided.draggableProps} {...provided.dragHandleProps} ref={provided.innerRef}> <div value={props.list._id} onClick = {props.handleListSelect} className="list"> <button value={props.list._id} onClick={props.handleDeleteList} > <BsXCircle/> </button> {props.list.title} </div> </div>

El fragmento de código a continuación funciona como se esperaba.

 <button value={props.list._id} onClick={props.handleDeleteList} > delete </button>

Mi función props.handleDeleteList está a continuación:

 const deleteList = async (e) =>{ console.log(e.target.value) }

Si uso <BsXCircle/> , el registro de mi consola es este:

{stringValue: '"undefined"', valueType: 'string', kind: 'ObjectId', value: 'undefined', path: '_id', …}

Estoy confundido de por qué está sucediendo esto....

¿No está asignado el valor que estoy pasando en el atributo de valor de mi botón? ¿Por qué la representación de un componente en lugar de un texto cambia el valor de mi botón?

He simplificado mi código solo por hacer esta pregunta. Agradecería cualquier comentario, incluso sobre formas de mejorar al hacer preguntas. Gracias de antemano :)

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

0

En primer lugar, el elemento <button/> debe aceptar solo ciertos tipos de elementos anidados: ref MDN

Contenido permitido Contenido de fraseo pero no debe haber contenido interactivo

Dicho esto, su problema es que los elementos anidados de <button/> heredan sus detectores de eventos, por lo que cuando anida el Componente de icono de reacción (un <svg> supongo) y hace clic en el botón, básicamente está enviando el evento de clic en el svg y no en el <button/> . Puede abordar el problema con una simple corrección de css:

 button > * { pointer-events: none; }

De esta manera, está deshabilitando todos los detectores de eventos en los elementos secundarios del botón y debería solucionarlo.

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