채팅-React.memo()

cornpip
|2023. 8. 22. 22:41

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