javascript
JavaScript, React 텍스트 입력시 줄바꿈 적용 없이 작성되는 이유?
honey.kikiki
2021. 12. 29. 17:57
728x90
자바스크립트 텍스트 입력시 줄바꿈 적용 없이 작성되는 이유?
자바스크립트 input 또는 textarea로 텍스트를 작성하고 데이터를 보낼떄 줄바꿈 없이 하나의 이어지는 텍스트로 가게된다.
이 현상을 해결하기 위해서 줄바꿈 하는 부분에 특정 문구를 넣어주면 해결될수있다.
텍스트 줄바꿈하는 부분에 특정 문구 추가하는 코드 (텍스트 입력받을떄)
// React
const onChangeContent = useCallback((e) => {
setContent(e.target.value.replace(/(?:\r\n|\r|\n)/g, "\n"));
}, []);
// javascript
const text = document.querySelector('textarea');
const result = text.value.replace(/(?:\r\n|\r|\n)/g, "\n");
텍스트 화면에 출력할떄
// React
content.split("\n").map((v) => {
return (
<span key={v}>
{v}
<br />
</span>
);
});
// javascript
const text = document.querySelector("#textarea");
const button = document.querySelector("button");
const root = document.querySelector("#root");
button.addEventListener("click", () => {
const result = text.value.replace(/(?:\r\n|\r|\n)/g, "\n");
const $span = document.createElement("span");
result.split("\n").map((text, i) => {
const $br = document.createElement("br");
$span.append(text, $br);
});
root.append($span);
});
텍스트를 입력받고나서 버튼을 클릭하면 받은 텍스트 안에 엔터를 친 부분에 \n이 들어가 있다.
그부분을 split로 배열로 만들고 배열은 map메서들르 이용해 반복문을 돌려 배열 사이사에 br태그를 추가해 주는 형식으로 줄바꿈이 가능 하게 된다.