Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

227
Views
¿Cómo agrego condicionalmente atributos a los componentes de React?

¿Hay alguna manera de agregar atributos a un componente React solo si se cumple una determinada condición?

Se supone que debo agregar los atributos requeridos y de solo lectura para formar elementos basados en una llamada Ajax después del renderizado, pero no puedo ver cómo resolver esto ya que readOnly="false" no es lo mismo que omitir el atributo por completo.

El siguiente ejemplo debería explicar lo que quiero, pero no funciona.

(Error de análisis: identificador inesperado)

 function MyInput({isRequired}) { return <input classname="foo" {isRequired ? "required" : ""} /> }
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Aparentemente, para ciertos atributos, React es lo suficientemente inteligente como para omitir el atributo si el valor que le pasa no es verdadero. Por ejemplo:

 const InputComponent = function() { const required = true; const disabled = false; return ( <input type="text" disabled={disabled} required={required} /> ); }

resultará en:

 <input type="text" required>

Actualización: si alguien tiene curiosidad sobre cómo/por qué sucede esto, puede encontrar detalles en el código fuente de ReactDOM, específicamente en las líneas 30 y 167 del archivo DOMProperty.js .

over 4 years ago · Santiago Trujillo Report

0

La respuesta de juandemarco suele ser correcta, pero aquí hay otra opción.

Construye un objeto como quieras:

 var inputProps = { value: 'foo', onChange: this.handleChange }; if (condition) inputProps.disabled = true;

Renderizar con extensión, opcionalmente pasando también otros accesorios.

 <input value="this is overridden by inputProps" {...inputProps} onChange={overridesInputProps} />
over 4 years ago · Santiago Trujillo Report

0

Aquí hay un ejemplo del uso del Button de Bootstrap a través de React-Bootstrap (versión 0.32.4):

 var condition = true; return ( <Button {...(condition ? {bsStyle: 'success'} : {})} /> );

Según la condición, se {bsStyle: 'success'} o {} . El operador de propagación luego distribuirá las propiedades del objeto devuelto al componente Button . En el caso falso, dado que no existen propiedades en el objeto devuelto, no se pasará nada al componente.


Una forma alternativa basada en el comentario de Andy Polhill :

 var condition = true; return ( <Button bsStyle={condition ? 'success' : undefined} /> );

La única pequeña diferencia es que en el segundo ejemplo, el objeto props del componente interno <Button/> tendrá una clave bsStyle con un valor de undefined .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!