sm 기술 블로그
[리액트] state 값 수정 본문
원하는 결과물
state에 저장된 메시지의 항목 중 원하는 항목의 내용을 변경하고자 한다.
Prev 사용
prev는 state의 이전 값들을 뜻한다.
setMsgC((prev) =>
[...prev].map((_msg) => (_msg.id === newMsg.id ? { ..._msg, content: newMsg.content } : _msg))
);
다음과 같이 prev와 삼항연산자를 이용한다.
(prev) =>
[...prev].map((_msg)
MsgC내에 있는 값들을 가져와 map을 이용하여 각 항을 이용할 준비를 마친다.
(_msg.id === newMsg.id ? { ..._msg, content: newMsg.content} : _msg))
그 후 각 항의 id와 새로 들어온 메세지의 id가 같은지 비교한다.
메시지가 같을 경우 내용을 변환한 다음 저장하고, 그게 아니라면 전 메시지를 그대로 저장힌다.
'리액트' 카테고리의 다른 글
[리액트] state 구조가 배열 안에 객체 안에 객체 값 변경 (0) | 2022.09.27 |
---|---|
[리액트] 소켓 비우고 다시 연결(stompjs 중첩 연결 해결) (1) | 2022.09.27 |
[리액트] 삼항연산자, &&연산자(if문) (0) | 2022.09.21 |
[리액트] 문자열 객체로 변환하기 (0) | 2022.09.18 |
[리액트] jwt 디코딩 (0) | 2022.09.18 |
Comments