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

342
Vistas
¿Debo inicializar una variable de estado nulo en un componente React?

Todavía soy un poco nuevo en React, y lo encuentro increíble, pero actualmente tengo una cosa en mente y me gustaría saber qué pensar al respecto.

Por ejemplo, estoy creando un componente de pago, donde tengo un campo de cupón de descuento.

Le paso el precio actual de mi evento al cupón para que calcule el nuevo:

 {this.state.showCouponField ? ( <CouponForm validateCoupon={(coupon) => this.setState({ coupon: coupon })} initialValue={this.state.coupon ? this.state.coupon.token : ''} initialPrice={this.state.event.final_price} setReducedPrice={(reducedPrice) => this.setState({ reducedPrice })} /> ) : null}

y luego mostrar:

 <p className="lead"> Total : <span className="pull-right"> {this.state.reducedPrice ? ( <span> <s> {isFree ? 'Gratuit' : `${event.real_final_price * this.state.participants} €`} </s> &nbsp; {this.state.reducedPrice === 0 ? 'Gratuit' : `${this.state.reducedPrice / 100 * this.state.participants} €`} </span> ) : ( <span> {isFree ? 'Gratuit' : `${event.real_final_price * this.state.participants} €`} </span> )} </span> </p>

Pero, por ejemplo, la variable reducedPrice es nula hasta que alguien usa un cupón.

La pregunta es: ¿es una buena práctica establecer el reducedPrice el estado inicial?

 constructor(props) { super(props); this.state = { event: null, creditCards: [], selectedCardId: null, addCreditCard: false, participants: 1, coupon: null, total: 0, error: null, loading: false, bookingId: null, user: null, showCardOptions: false, showModal: false, modalUrl: null, }; this.updatePaymentMeans = this.updatePaymentMeans.bind(this); }

Todas estas variables nulas me parecen inútiles, ya que están vacías de forma predeterminada y no son necesarias, o todavía no he visto un error, para inicializarse porque el estado es un objeto, por lo que se puede crear sobre la marcha.

Sé que olvidaré algunos de estos, así que me pregunto si simplemente no los configuraría para que se rompa claramente si me pierdo uno.

Pregunta abierta :D

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Tenerlos como null o undefined lo llevará a los mismos resultados / errores, ya que rara vez usará triple-igual para comparar su existencia.

 selectedCreditCardId ? something : else

Pero, de nuevo, sucede lo mismo con true / false , a diferencia de otros tipos (cadenas, números, ...), rara vez usas el triple-igual.

Entonces es exactamente lo mismo: this.state = { isTall: false } , que no tenerlo en absoluto

isTall ? yes : no

todavía le dará los mismos resultados. (este ejemplo es para brindarle un mejor contexto a los enlaces que le mostraré más adelante)

En mi opinión, ya que esa es una pregunta obstinada.
Tenerlos definidos en la parte superior, a diferencia de tenerlos distribuidos en el método de renderizado, le dará una visión general rápida de lo que hay en el estado y cuál será su próximo estado.

Haz lo que quieras, solo asegúrate de ser consistente.

También es posible que desee comprobar:

  • https://github.com/erikras/react-redux-universal-hot-example/blob/master/src/containers/About/About.js
  • https://github.com/fbsamples/f8app/blob/master/js/login/LoginScreen.js
  • https://github.com/fbsamples/f8app/blob/master/js/common/ViewPager.js
  • http://reactkungfu.com/2015/09/common-react-dot-js-mistakes-unneeded-state/
over 4 years ago · Santiago Trujillo 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