Llama의 답변 내에서 줄바꿈 문자(\n)가 포함되어 있는데, React 웹앱에서 줄바꿈이 제대로 표시되지 않는 문제가 발생했습니다.
해결 방법
App.css의 .App 스타일에 white-space: pre-wrap 속성을 추가하여 해결했습니다.
CSS 수정
1
2
3
.App{white-space:pre-wrap;}
white-space 속성 설명
white-space 값 비교
값
공백 병합
줄바꿈 문자
자동 줄바꿈
normal
O
X
O
nowrap
O
X
X
pre
X
O
X
pre-wrap
X
O
O
pre-line
O
O
O
break-spaces
X
O
O
상세 비교
1. normal (기본값)
1
white-space:normal;
연속된 공백을 하나로 병합
\n 무시
자동 줄바꿈 적용
2. pre
1
white-space:pre;
공백과 줄바꿈 그대로 유지
자동 줄바꿈 안 함 (가로 스크롤 발생 가능)
3. pre-wrap (권장)
1
white-space:pre-wrap;
공백과 줄바꿈 유지
자동 줄바꿈 적용
반응형 디자인에 적합
4. pre-line
1
white-space:pre-line;
연속 공백은 병합
줄바꿈 문자는 유지
자동 줄바꿈 적용
React 컴포넌트 예시
기본 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
import'./App.css';functionApp(){constllamaResponse="첫 번째 줄입니다.\n두 번째 줄입니다.\n세 번째 줄입니다.";return (<divclassName="App"><p>{llamaResponse}</p></div>);}exportdefaultApp;
functionApp(){constllamaResponse="첫 번째 줄<br/>두 번째 줄<br/>세 번째 줄";return (<divclassName="App"><divdangerouslySetInnerHTML=/></div>);}
주의: XSS 공격에 취약할 수 있으므로 신뢰할 수 있는 데이터에만 사용
2. split()과 map() 사용
1
2
3
4
5
6
7
8
9
10
11
12
functionApp(){constllamaResponse="첫 번째 줄\n두 번째 줄\n세 번째 줄";constlines=llamaResponse.split('\n');return (<divclassName="App">{lines.map((line,index)=>(<pkey={index}>{line}</p>))}</div>);}
3. <pre> 태그 사용
1
2
3
4
5
6
7
8
9
functionApp(){constllamaResponse="첫 번째 줄\n두 번째 줄\n세 번째 줄";return (<divclassName="App"><pre>{llamaResponse}</pre></div>);}
전체 예제 코드
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
importReact,{useState}from'react';import'./App.css';functionApp(){const[response,setResponse]=useState("안녕하세요!\n\nLlama 모델의 응답입니다.\n\n줄바꿈이 잘 표시됩니다.");return (<divclassName="App"><h1>Llama 응답</h1><divclassName="response-container">{response}</div></div>);}exportdefaultApp;