줄 바꿈이 포함 된 텍스트 문자열이 있고 다음과 같이 렌더링한다고 가정합니다.
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
이 스타일 속성과 함께) 를 사용할 수도 있습니다 .
-webkit-user-modify: read-write-plaintext-only;
div에서 사용할 수 있습니다 . 예를 들어 \ n 및 \ p와 같은 것을 형식화하고 이해합니다.
<br>
문제가 될 수 있습니다.<br/>
HTML 4 버전 을 사용하지 않으면 JS Transformer가 좋아하지 않는다는 것을 알게되었습니다 .