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

99
Vistas
onClick ejecutando una función y setState en reaccionar

Estoy atascado con esta función, tengo un onClick que cuando un usuario hace clic en él, tiene que realizar dos cosas en función de la declaración If, una función y un estado, pero no parece funcionar:

en mi código, quiero la fila cuando no está deshabilitada para hacer "doScore" y "rolling: true", pero no sé cómo escribirlo para que funcione

 function RuleRow({ doScore, name, score, description, rolling }) { const disabled = score !== undefined; return ( <tr className={`RuleRow RuleRow-${disabled ? "disabled" : "active"}`} onClick={disabled ? null : doScore} > <td className="RuleRow-name">{name}</td> <td className="RuleRow-score">{disabled ? score : description}</td> </tr > ); }
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

  1. especifique por favor qué es el apoyo rolling (qué valores se pueden pasar como rolling ) y cómo debería impactar en el componente RuleRow . Por ahora no veo ninguna mención del componente interior rolling .
  2. Como puede ver en el fragmento a continuación, su función doScore se ejecutará en onClick si la score no es estrictamente igual a undefined . Entonces, o score es igual a undefined , o doScore es una función no válida o no funciona en absoluto. Así que supongo que hay algo con doScore . Proporcione por favor lo que pasa en este apoyo.
  3. Si desea actualizar el estado del componente que es principal del componente RuleRow . Debe escribir algo como const [score, setScore] = useState('initial score') . Pegue setScore en RuleRow como accesorio. Y luego, dentro RuleRow escribe onClick={disabled ? null : () => setScore('anything what you want')} . la score dentro del componente principal se actualizará y RuleRow se volverá a representar.

 function App() { const score = undefined; const disabled = score !== undefined; console.log('value of disabled id ', disabled); return ( <table className="App"> <tr onClick={disabled ? null : () => console.log("clicked")}>Hello, click me!</tr> </table> ); } const rootElement = document.getElementById("root"); ReactDOM.render( <App />, rootElement );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script> <div id="root"></div>

about 4 years ago · Juan Pablo Isaza Denunciar

0

function RuleRow({ doScore, name, score, description, rolling }) { const disabled = score !== undefined; const handleClick = () => { if (score !== undefined && rolling) { // do something } else { doScore(); } }; return ( <tr className={`RuleRow RuleRow-${disabled ? "disabled" : "active"}`} onClick={handleClick} > <td className="RuleRow-name">{name}</td> <td className="RuleRow-score">{disabled ? score : description}</td> </tr > ); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Esta no es la solución más limpia, pero podría usar una función de flecha que tiene un valor nulo si está deshabilitada o un cuerpo de función que llame a dos funciones:

 onClick={disabled ? null : (evt) => { doScore(evt); this.setState({ rolling: true }); }}

La forma recomendada de hacerlo sería crear una función personalizada que llame a ambas funciones o simplemente establecer el estado rolling: true en la función doScore si es posible.

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