Web/React & Next.js

React | \n으로 받은 string data를 <br/> 처리하여 줄바꿈하기

일렁이는코드 2022. 1. 11. 22:52

string 형식의 데이터를 JSX문법으로 렌더링 할 때 제목, 날짜 등 한 줄짜리 string은 문제없이 출력이 된다. 그렇지만 본문의 내용이든지, 채팅할 때 줄 바꿈 처리는 어떻게 렌더링 해야 할까?

 

JSX문법은 \n 을 줄바꿈으로 읽지 않고 string 형식으로 그대로 출력을 한다. 불러오는 데이터 자체가 문자열이니 \n 을 줄바꿈의 표시라고 읽는것도 말이 안되는 것 같기도 ... 🧐


🍋 받아오는 데이터 형식

react에서는 수많은 데이터의 양으로 반복되는 부분을 줄이기 위해 데이터 파일을 따로 만들어 map을 사용하여 불필요한 코드를 줄여준다.

[
  {
    id: 1,
    title: '첫번째 글',
    date: '2022-01-01',
    main: '새해입니다!\n모두모두 건강하세요.',
  },
  {
    id: 2,
    title: '인사드려요',
    date: '2022-02-24',
    main: '안녕하세요\n\n이것은 줄바꿈입니다\n헬로헬로',
  },
  {
    id: 3,
    title: '생일축하문구',
    date: '2022-04-16',
    main: '생\n일\n축\n하\n해',
  },
];

 

🍋 구현 방법

띄어쓰기가 필요한 문구를 \n 을 포함한 string 형태로 받아온다면,  데이터 전체 배열의 map 안에 \n을 기준으로 split 하여 또 다른 배열을 생성하고, map을 사용하여 띄어쓰기를 구현해줄 수 있다.

배열[0] (첫번째문장) + <br/>
배열[1] (두번째문장) + <br/>
배열[2] (세번째문장) + <br/>

 

id값이 2인 main의 문자열로 예를 들어보겠다.

 main: '안녕하세요\n\n이것은 줄바꿈입니다\n헬로헬로'
{main.split('\n').map(line => {
              return (
                <>
                  {line}
                  <br />
                </>
              );
            })}

 


🍋 결과 화면

반응형