Supongamos que tengo una cadena de texto que contiene saltos de línea y la renderizo así:
render() {
    var text = "One\nTwo\nThree";
    return <div>{text}</div>;
}
En HTML, los saltos de línea no se representan como saltos de línea. ¿Cómo debo hacer esto en React? No quiero convertir a <br>etiquetas y usar dangerouslySetInnerHTML. ¿Hay otra manera?

<br>ese podría ser el problema. He notado que al JS Transformer no le gusta a menos que use la<br/>versión HTML 4.Respuestas:
Podrías intentar poner divs para cada línea
render() { return (<div> <div>{"One"}</div> <div>{"Two"}</div> <div>{"Three"}</div> </div>); }O
render() { var text = "One\nTwo\nThree"; return ( <div> {text.split("\n").map((i,key) => { return <div key={key}>{i}</div>; })} </div>); }fuente
<MultilineText>componente con él!<div>para formatear líneas de texto?<p>parece más semánticamente correcto.Crea una nueva clase CSS
Muestra tu texto con esa clase CSS
render() { const text = 'One \n Two \n Three'; return ( <div className="display-linebreak"> {text} </div> ); }Renders con saltos de línea (las secuencias de espacios en blanco se colapsarán en un solo espacio en blanco. El texto se ajustará cuando sea necesario). Me gusta esto:
También puede considerar la pre-envoltura. Más información aquí ( Propiedad de espacios en blanco CSS ).
fuente
Puede utilizar la propiedad CSS "white-space: pre". Creo que esta es la forma más fácil de manejar esto.
fuente
white-space:preTuvo el mismo efecto quewhite-space:nowrappara mí, es decir, el texto desbordó su contenedor. Usar en suwhite-space:pre-wraplugar resolvió esto.white-space: pre-line;lugar.Aquí la solución más limpia (afaik):
render(){ return <pre> Line 1{"\n"} Line 2{"\n"} Line 3{"\n"} </pre> }En lugar de, también puede usar
<div style={{whiteSpace:"pre"}}>, o cualquier otro elemento de bloque html (comospanopcon este atributo de estilo)fuente
Renderice su texto delimitado "Mi línea uno \ nMi segunda línea \ nQué ..." dentro de un área de texto html normal. ¡Sé que funciona porque lo acabo de usar hoy! Haga que el área de texto sea readOnly si es necesario, y aplique el estilo correspondiente.
fuente
Puede usar
-webkit-user-modify: read-write-plaintext-only;en su div. Formateará y comprenderá cosas como \ n y \ p, por ejemplo.fuente
Puede hacer uso de la etiqueta textarea de html, luego puede agregar el estilo a la etiqueta textarea. Prácticamente resuelve todos sus problemas, incluidos los saltos de línea y los espacios de tabulación. Alegría ...
por ejemplo: su render se verá más abajo
render() { var text = "One\nTwo\nThree"; return <textarea>{text}</textarea>; }Salida:
fuente
Prueba este
render() { var text = "One\nTwo\nThree"; return <div style={{whiteSpace: 'pre-line'}}>{text}</div>; }fuente
En su lugar, puede ejecutar con seguridad
String.raweste tipo de valor.const text = String.raw`One Two Three `render() { return <div style={{ whiteSpace: "pre" }}>{text}</div> }También puede usar una
<pre>etiqueta que efectivamente haga lo mismo, pero es menos clara semánticamente si ya la está usando para otros propósitos en su aplicación.fuente
<div style={{ whiteSpace: "break-spaces" }}> {JSON.stringify(state, null, " ")} </div>fuente