구글링으로는 답이 나오지 않았다.
: 리액트를 다루다보면 개행이 생각보다 어렵다.
여러 방법을 써 보아도 다 무시된다.
리액트는 JSX이기 때문에 태그나 JS의 '\n' 사용이 가능할 것 같지만 사실 둘 다 불가능하다.
렌더시 <br>
이 들어간 태그를 렌더해보면 <br>
까지 텍스트로 처리가 될 것이며 \n 으로 개행이 되었지만 렌더되며 다시 붙게될 것이다.
이런 문제점을 해결할 수 있는 방법들을 고민해보았다.
: 안되는거 알지만 해보자.
class ASHlab extends Component {
render() {
return (
<div>첫번째 줄 블라블라 \n 두번째 줄 블라블라</div>
)
}
}
class ASHlab extends Component {
render() {
return (
<div>첫번째 줄 블라블라 { \n } 두번째 줄 블라블라</div>
)
}
}
{'\n'}
String 으로 변경 시키면...? 더 가능성이 없다.class ASHlab extends Component {
render() {
return (
<div>`첫번째 줄 블라블라
두번째 줄 블라블라`</div>
)
}
}
`
마저 텍스트로 취급될뿐이다.: 응.. 안된다.
<br>
대신 넣어둔 \n 을 기준으로 split으로 잘라보자.: 모든 요소들을 상태 객체로 처리하되 위에서의 실패와는 다르게 그 내부 요소를 자바스크립트 메서드로 구성하는 것이다. split과 map을 이용해보자.
{textElement.split('\n').map((line) => {
return <div>{line}</div>})}
<div>
에 자른 요소를 모두 넣었더니.... 모두 줄바꿈이 되었다.<br>
로 줄이 바뀐 텍스트 요소를 가지고 싶다.<div>
대신 <br>
을 넣으면 되지 않을까?{textElement.split('\n').map((line) => {
return <>{line}</br><>})}
<br>태그
를 넣어주니 줄바꿈이 되었다. white-space: pre-wrap 을 쓰자....
헐 대박!!!! 이거 이제 봤어요!!