[React] setState callBack ํจ์
SleepyWoods ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์ ์ฒด ์ฑํ ๊ธฐ๋ฅ์ ๊ตฌํํ์๋ค.
์ ์ฒด ์ฑํ ์ ๋ด๋นํ๋ Chat ์ปดํฌ๋ํธ์์ ์ง์ญ์ํ๋ก ์ ์ฒด ์ฑํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๋๋ก ํ๋๋ฐ ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
const [chatDatas, setChatDatas] = useState<chatType[]>([]);
// ์ฑํ
์
๋ฐ์ดํธ
const updateChat = (chat: chatType) => {
...
chat.timestamp = calcTimeFromMs(chat.timestamp); // timestamp์ ํฌ๋ฉงํ
ํ๋ ํจ์ ํธ์ถ
setChatDatas([...chatDatas, chat]);
};
type chatType = {
type: string;
timestamp: string;
nickname: string | number;
message: string;
};
์ฝ๋์ ๋ํ ์ค๋ช ์ ๊ฐ๋จํ ํ๋จupdateChat์ด๋ผ๋ ํจ์๋ socket์ผ๋ก ๋ค๋ฅธ ์ ์ ์ ์ฑํ ์ด ์์ ๋, ๋ด๊ฐ ์ฑํ ์ ๋ณด๋์ ๋ ํธ์ถ๋๊ณ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฐ์ด ๊ฐ๊ณต๋์ด chatType์ด๋ผ๋ type์ ํํ๋ก setChatDatas์ ์ํด ๊ด๋ฆฌ๋๋ ํ์์ด๋ค.
ํ์ง๋ง ์์ฒ๋ผ ์ฝ๋๋ฅผ ์์ฑํ์ ๋, socket์ ํตํด์ ๋ค๋ฅธ ์ ์ ์ ์ฑํ ์ ๋ฐ๊ณ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ณผ์ ์์ chatDatas๊ฐ ์ด์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ...
๊ฒฐ๊ณผ์ ์ผ๋ก useState์ set ํจ์ setChatDatas์ ์ธ์๋ก ์ฝ๋ฐฑ ํจ์๋ฅผ ๋๊ฒจ์ค์ผ๋ก์จ ํด๊ฒฐํ์ต๋๋ค.
setChatDatas(chatDatas => [...chatDatas, chat]);
์ด๋ฌํ ๋ฌธ์ ๋ useState๊ฐ ๋น๋๊ธฐ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ด์๊ณ , useState์ set ํจ์์ ์ธ์๋ก ์ฝ๋ฐฑ ํจ์(์ต๋ช ํจ์)๋ฅผ ๋๊ฒจ์ฃผ๊ฒ ๋๋ฉด ๋๊ธฐ์ ์ผ๋ก ๋์ํ๋๋ก ์ ๋ํ ์ ์์๋ค.
+ useState ํน์ง
- ๋น๋๊ธฐ๋ก ๋์
- ๋ด๋ถ์ ์ผ๋ก๋ BATCH ์ฒ๋ฆฌ
- ์๋ก์ด state๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์ธ์๋ก ๋๊ธธ ์ ์์