改行を含むテキスト文字列があり、次のようにレンダリングするとします。
render() {
var text = "One\nTwo\nThree";
return <div>{text}</div>;
}
HTMLでは、改行は改行として表示されません。Reactでこれをどのように行う必要がありますか?<br>
タグに変換して使用したくありませんdangerouslySetInnerHTML
。別の方法はありますか?
改行を含むテキスト文字列があり、次のようにレンダリングするとします。
render() {
var text = "One\nTwo\nThree";
return <div>{text}</div>;
}
HTMLでは、改行は改行として表示されません。Reactでこれをどのように行う必要がありますか?<br>
タグに変換して使用したくありませんdangerouslySetInnerHTML
。別の方法はありますか?
回答:
各行にdivを配置してみてください
render() {
return (<div>
<div>{"One"}</div>
<div>{"Two"}</div>
<div>{"Three"}</div>
</div>);
}
または
render() {
var text = "One\nTwo\nThree";
return (
<div>
{text.split("\n").map((i,key) => {
return <div key={key}>{i}</div>;
})}
</div>);
}
<MultilineText>
もそれからコンポーネントを作ることができると思います!
<div>
テキスト行のフォーマットに使用するのですか?<p>
より意味的に正しいようです。
新しいCSSクラスを作成する
.display-linebreak {
white-space: pre-line;
}
そのCSSクラスでテキストを表示する
render() {
const text = 'One \n Two \n Three';
return (
<div className="display-linebreak">
{text}
</div>
);
}
改行付きでレンダリングします(空白のシーケンスは単一の空白に折りたたまれます。テキストは必要に応じて折り返されます)。このような:
One
Two
Three
プレラップを検討することもできます。詳細はこちら(CSS空白プロパティ)。
CSSプロパティ「white-space:pre」を使用できます。これがこれを処理する最も簡単な方法だと思います。
white-space:pre
white-space:nowrap
私と同じ効果がありました。つまり、テキストがコンテナからオーバーフローしました。white-space:pre-wrap
代わりに使用してこれを解決しました。
white-space: pre-line;
代わりに使用してください。
ここで最もクリーンなソリューション(afaik):
render(){
return <pre>
Line 1{"\n"}
Line 2{"\n"}
Line 3{"\n"}
</pre>
}
代わりに使うこともでき<div style={{whiteSpace:"pre"}}>
、または(のような任意の他のHTMLブロック要素span
またはp
このスタイル属性を持ちます)
<div style={{ whiteSpace: "break-spaces" }}> {JSON.stringify(state, null, " ")} </div>
<br>
した場合、それが問題になる可能性があります。<br/>
HTML 4バージョンを使用しない限り、JSTransformerはそれを気に入らないことに気づきました。