
const Messeges = () => {
<>
<S.Messages>
{
reMsgArr.map((v: responseMsgDto[], idx) => {
return <Message key={idx} responseMsgArr={v} />
})
}
<div ref={chatRef}></div>
</S.Messages>
<S.InputDiv>
<S.TextArea
value={inputMsg}
onChange={(e: any) => setInputMsg(e.target.value)}
onKeyDown={keyDownHandler}
/>
<S.Send>
<S.SendBtn
onClick={sendHandler}>
Send
</S.SendBtn>
</S.Send>
</S.InputDiv>
</>
}
위와 같은 구성에서 textArea 변경할 때 setInputMsg 돌면서 Messages 재실행 그리고 Message 도 재실행된다.
Message 컴포넌트는 inputMsg 값과는 무관한 컴포넌트이고 재실행 될 이유가 없으므로
export default memo(Messege);
다음과 같이 React.memo를 붙여 export 해준다.

textArea 변경해도 Message는 재실행되지 않는다.
'front-end' 카테고리의 다른 글
| 최적화 관련 useRecoilState, useState (0) | 2023.08.25 |
|---|---|
| react contextMenu 만들기 (0) | 2023.08.24 |
| 채팅 - Array.prototype.reduce() (0) | 2023.08.22 |
| 프론트 상태 관리 Recoil 사용하기 (0) | 2023.08.19 |
| webpack ts react boilerplate (0) | 2023.08.18 |