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

485
Vistas
Infracción invariable: las cadenas de texto deben representarse dentro de un componente <Text>

Actualicé de RN 0.54 a 0.57 y mi aplicación prácticamente se cayó debido al uso de React Native Elements.

Aproveché su funcionalidad de error en los componentes TextInput que básicamente habilitaron accesorios para que pudiera diseñar el mensaje de error y configurar su mensaje de error. Muy conveniente, sin embargo, la actualización los rompió y ahora recibo este error:

Infracción invariable: las cadenas de texto deben representarse dentro de un componente <Text>.

Así que eliminé ese código y el error desaparece, sin embargo, sigo recibiendo el problema cuando ejecuto este código:

 { this.state.event.cards[i].fields[j].error && <Text style={{ color: '#e74c3c', fontSize: 14, paddingLeft: 5 }}> {this.state.event.cards[i].fields[j].error} </Text> }

Cuando empiezo a escribir en una entrada de texto, establece mi mensaje de error en una cadena vacía, por lo que si se devuelve un error, escribir en el campo hará que el error desaparezca.

Tan pronto como this.state.event.cards[i].fields[j].error se convierte en una cadena, me devuelve este error. Sin embargo, puede ver que verifico si existe un error, luego solo muestro el error, o intento al menos.

Otro par de ojos estarían agradecidos con este.

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

0

Me disparé en el pie demasiadas veces por esto, así que lo dejo aquí para que la próxima persona no lo haga...

cada vez que ves

 Invariant Violation: Text strings must be rendered within a <Text> component

¿El 99 % de los casos se debe al uso de representación condicional con solo && en lugar de ternario? : declaraciones. ¿Por qué? Porque cuando su condición se resuelve en undefined , no hay componentes allí, a diferencia de nulo o una matriz vacía que habría mostrado de manera segura un espacio vacío y le habría salvado la vida de la pantalla roja del infierno.

Cambie TODAS SUS RENDICIONES CONDICIONALES LÓGICAS en representaciones ternarias.

es decir:

NO HAGAS

 widgetNumber === 10 && <MyComponent />

HACER HACER

 widgetNumber === 10 ? <MyComponent /> : null

Cada vez. Por favor. Por el amor de reaccionar nativo.

over 4 years ago · Santiago Trujillo Denunciar

0

También ocurre cuando tiene /* Comentarios */ en su función return().

over 4 years ago · Santiago Trujillo Denunciar

0

Para mí, el siguiente código funciona bien, siempre que this.state.error === undefined o no sea una cadena vacía.

 render() { return ( <View> {this.state.error && <Text> Error message: {this.state.error} </Text> } </View> ); }

Si el estado de error se cambia a cadena vacía '', tendrá la excepción mencionada anteriormente: Invariant Violation: Text strings must be rendered within a <Text> component

La razón de esto es que cuando this.state.error === '' , la siguiente expresión se evaluará como una cadena vacía, es decir, '', y esto provocará una Invariant Violation: Text strings must be rendered within a <Text> component

 {this.state.error && <Text> Error message: {this.state.error} </Text> }

Cuando this.state.error === undefined , la expresión se evaluará como undefined , que es lo que esperamos, y está bien.

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