CSS
textarea {
all: unset;
box-sizing: border-box;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
overflow: hidden;
width: 100%;
height: 1.7em;
line-height: 1.7em;
}
컴포넌트
import { useRef, useState } from "react";
export default function Write() {
const textareaRef = useRef<HTMLTextAreaElement | null>(null);
const [text, setText] = useState("");
const onChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
setText(e.currentTarget.value);
// textarea 높이 조절
if (textareaRef && textareaRef.current) {
textareaRef.current.style.height = "0px";
const scrollHeight = textareaRef.current.scrollHeight;
textareaRef.current.style.height = scrollHeight + "px";
}
};
return (
<div className="wrapper">
<textarea
ref={textareaRef}
value={text}
onChange={onChange}
placeholder="내용을 입력하세요."
/>
</div>
);
}
결과물
'Develop > React' 카테고리의 다른 글
[React] Pagination 구현하기 (1) | 2023.08.14 |
---|---|
[React] CSS 없이 간단한 별점 기능(Star Rating) 구현하기 (0) | 2023.07.27 |
[React] memo / useMemo (0) | 2023.02.23 |
[React] lazy import (0) | 2023.02.22 |
[React] React에서 if 구문 사용하기 (0) | 2023.02.21 |