Intro
์ด์ ์ ์ด์ด ์ผ๊ธฐ์ฅ ํ๋ก์ ํธ ์ค์ต์ ํ์ตํ์๋ค.
React Hooks์ ๋ํด ๊ณต๋ถํ๋ค.
์ค๋ ํ์ตํ ๋ด์ฉ
React์์ ๋ฐฐ์ด ์ฌ์ฉํ๊ธฐ - ๋ฐ์ดํฐ ์ถ๊ฐํ๊ธฐ
์ธ๋ถ ๋ชฉํ
- ๋ฐฐ์ด์ ์ด์ฉํ React์ List์ ์์ดํ ์ ๋์ ์ผ๋ก ์ถ๊ฐํด๋ณด๊ธฐ
- With React ์ฒ๋ผ ์๊ฐํ๊ธฐ
์ปดํฌ๋ํธ & ๋ฐ์ดํฐ ๊ตฌ์กฐ ์๊ฐํด๋ณด๊ธฐ
- ์ต์๋จ ํ๊ทธ <App />์ ๊ธฐ์ค์ผ๋ก ํธ๋ฆฌ ํํ ์ปดํฌ๋ํธ
- ๊ฐ์ ๋ ๋ฒจ์ ์ปดํฌ๋ํธ ๋ผ๋ฆฌ๋ (DiaryEditor, DiaryList) ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
- React๋ ๋จ๋ฐฉํฅ์ผ๋ก๋ง ๋ฐ์ดํฐ๊ฐ ํ๋ฅธ๋ค.
- ๋ฐ๋ผ์, App์ state๋ฅผ ์ปดํฌ๋ํธ ๊ฐ๊ฐ์ ์ ๋ฌํด ์ฃผ์ด์ผ ํ๋ค.
- DiaryEditor์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํด setData๋ฅผ ์์ฒญํ๊ณ App์์ ๋ณ๊ฒฝ๋ Data๋ฅผ DiaryList์ ์ ๋ฌํ๋ค. โก๏ธ state ๋์ด์ฌ๋ฆฌ๊ธฐ
React์์ ๋ฆฌ์คํธ ๋ฐ์ดํฐ ์์ ํ๊ธฐ
์ธ๋ถ ๋ชฉํ
- ๋ฐฐ์ด์ ์ด์ฉํ React์ List์ ์์ดํ ์ ๋์ ์ผ๋ก ์์ ํด๋ณด๊ธฐ
- With ์กฐ๊ฑด๋ถ ๋ ๋๋ง
React LifeCycle ์ ์ดํ๊ธฐ
Lifecycle(์์ ์ฃผ๊ธฐ)โ
์ผ๋ฐ์ ์ผ๋ก ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ, ํ์๋ถํฐ ์ฃฝ์์ ์ด๋ฅด๋ ์๊ฐ์ ๋ฐ๋ฅธ ๋จ๊ณ์ ์ธ ๊ณผ์
React Hooks
useState, useEffect, useRef...
- 2019๋ 6์ ์ ์ ์ถ์๋ ๊ธฐ๋ฅ์ด๋ค.
- classํ ์ปดํฌ๋ํธ์ ๊ธธ์ด์ง๋ ์ฝ๋ ๊ธธ์ด ๋ฌธ์ , ์ค๋ณต ์ฝ๋, ๊ฐ๋ ์ฑ ๋ฌธ์ ๋ฑ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ๋ค.
useEffect๋ก lifecycle ๊ตฌํํ๊ธฐ
import React, { useEffect } from 'react';
useEffect(() => {
// todo...
}, []);
- ๋งค๊ฐ๋ณ์๋ก callbackํจ์์ Dependency Array(์์กด์ฑ ๋ฐฐ์ด)์ ๋ฐ๋๋ค.
- ์์กด์ฑ ๋ฐฐ์ด ๋ด์ ๋ค์ด์๋ ๊ฐ์ด ๋ณํํ๋ฉด ์ฝ๋ฐฑ ํจ์๊ฐ ์ํ๋๋ค.
- ๋น ๋ฐฐ์ด์ ์ ๋ฌ ์ ์ต์ด ํ ๋ฒ๋ง ์คํ์ด ๋๋ค. โก๏ธ mount ๊ตฌํ ๊ฐ๋ฅ
useEffect(() => {
console.log('mount!');
}, []);
- Dependency Array๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฉด ์ ๋ฐ์ดํธ๋ ๋๋ง๋ค ์คํ๋๋ค โก๏ธ update
useEffect(() => {
console.log('update!');
});
- unmount ๊ตฌํ
const UnmountTest = () => {
useEffect(() => {
console.log('mount!');
return () => {
// unmount ์์ ์ ์คํ๋๊ฒ ๋จ
console.log('unmount!');
};
}, []);
return <div>Unmount Testing Component</div>;
};
๋ง๋ฌด๋ฆฌ
React Hooks๊ฐ ์ค์ํ๋ค๋ ๊ฑด ์๊ณ ์์์ง๋ง ์ ๋๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ชฐ๋๋๋ฐ ์ด๋ฒ ์ค์ต์ ํตํด ์๊ฒ๋์๋ค. ๐