최대 1 분 소요

Project

팀 프로젝트 컴포넌트 만들기

React 팀 프로젝트

컴포넌트 만들기

Detail Components

<Comment>
  <span>코멘트</span>
  {comment.length > 150 ? (
    <>
      {commentShort ? (
        <p>
          {`${comment.slice(0, 150)}...`}
          <button onClick={toggleComment}>더 보기</button>
        </p>
      ) : (
        <p>
          {comment}
          <button onClick={toggleComment}>숨기기</button>
        </p>
      )}
    </>
  ) : (
    <p>{comment}</p>
  )}
</Comment>

코멘트가 무한히 길어질 수는 없을 것 같아서 일단 150자 정도로 자르고

더보기와 숨기기 기능을 추가하였다.

Indicator

나타내는 숫자는 돈이므로 천단위마다 ,을 찍어주는 것이 가독성에 좋다.

따라서 number.toLocaleString 을 사용하여 천 단위 마다 ,를 나타냈다.

ChatForm

const ChatForm = ({ onSubmit }) => {
  const [chatContent, setChatContent] = useState("");

  const onChange = (e) => setChatContent(e.target.value);

  return (
    <form onSubmit={onSubmit}>
      <TextInput
        placeholder="채팅 내용을 입력하세요."
        onChange={onChange}
        value={chatContent}
      />
      <Button shortBtn content="보내기" />
    </form>
  );
};

상위 컴포넌트에서 이 ChatForm에서의 input에 있는 값을 가져가야 하기 때문에 onSubmit 함수를 밖에서 받아와야 한다.

const handleChatSubmit = (e) => {
  e.preventDefault();
  console.log(e.target[0].value);
};

return <ChatForm onSubmit={handleChatSubmit} />;

이런 식으로 사용해야 한다. e.target은 form 으로 자식 요소(input, button) 중 가장 처음에 있는 input 요소의 value를 가지고 온다.

댓글남기기