-> https://master--todolisthahaday.netlify.app/
-> ๋ฐ์ํ์ด ์ ์ฉ๋์ด ์์ง ์์ต๋๋ค.
-> (๐ฅ๐ค๐ฅ๐ค๋ญ์ผ...๐ค๐ค๐ฅ๐ฅ๐ฅ์
๐ฅ์ฑ๐ฅ๐ฅ๐ค) ์ง๋ฃจํ Todolist ๋ ๊ฐ๋ผ!
๋ด๋๋ด๋ ์ง๋ฆฌ์ง ์๋ ๊ท์ฌ์ด ์ปจ์
์ Todolist์ ํจ๊ป ,์์
์ ๋ค์ผ๋ฉฐ ์ค๋์ ํ ์ผ์ ์์ฑํด ๋ณด์ธ์!!!
์ค์๊ฐ ๋ฐฉ์ก์ ๋ณด๋ฉฐ ์ค๋์ ํ ์ผ์ ์ง์คํ์ฌ ํ๋์ฉ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ โจ์ง๋ฆฟํจโจ์ ๋๊ปด๋ณด์ธ์!
For building and running the application you need:
$ git clone [email protected]:KDT1-FE/KDT5-M2.git
$ cd KDT5-M2
$ cd KDT5-M2
$ npm install
$ npm run dev
๋ฉ์ธ ํ์ด์ง |
---|
Todo ๋ฑ๋ก |
Todo ์์ , ์ญ์ |
์์ ํ๋ ์ด๋ฆฌ์คํธ |
๋น๋์ค ํ๋ ์ด๋ฆฌ์คํธ |
ํ์ฌ ์จ๋, ๋ ์จ ์์ด์ฝ ๊ธฐ๋ฅ |
- ๋ ์จ openApi๋ฅผ ์ด์ฉํ์ฌ ํ์ฌ ์์น์ ๋ง๋ ๋ ์จ ๋ฐ์ดํฐ์ ์จ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ , ์จ๋์ ๋ฐ๋ผ ๋ ์จ ์ด๋ชจํฐ์ฝ์ด ๋ค๋ฅด๊ฒ ์ถ๋ ฅ๋๋๋ก ๊ตฌํํ์์ต๋๋ค.
- todolist๋ฅผ ๋ฑ๋ก, ์ญ์ , ์์ ๊ธฐ๋ฅ์ ๊ตฌํํ์์ต๋๋ค.
- youtube openApi ๋ฅผ ์ด์ฉํ์ฌ ์์ ์์ด์ฝ์ ํด๋ฆญ์ ๋ชจ๋ฌ์ฐฝ์ด ๋จ๊ณ , ํ์ฌ ์ ์ฅ๋ playlist ๊ฐ ํธ์ถ๋๊ฒ ๊ตฌํํ์์ต๋๋ค.
- youtube openApi ๋ฅผ ์ด์ฉํ์ฌ ๋น๋์ค ์์ด์ฝ์ ํด๋ฆญ์ ๋ชจ๋ฌ์ฐฝ์ด ๋จ๊ณ , ํ์ฌ ์ ์ฅ๋ ์ค์๊ฐ viediolist ๊ฐ ํธ์ถ๋๊ฒ ๊ตฌํํ์์ต๋๋ค.
- ํ์ฌ ๋ก์ปฌ ์๊ฐ์ ๊ตฌํ์ฌ, ํ์ฌ ์๊ฐ์ด ์ถ๋ ฅ๋๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์์ต๋๋ค.
-> input ์ปดํฌ๋ํธ์ list์ปดํฌ๋ํธ๋ฅผ ๋๋์๊ธฐ๋๋ฌธ์ ๋์ ์ปดํฌ๋ํธ๊ฐ import ๋์ด์๋ LandingPage์ props๋ก ์ํ๊ฐ์ ๋๊ฒจ ์ค์ผ ํฉ๋๋ค.
๋ฐ๋ผ, input ์ปดํฌ๋ํธ ์๋ ๊ธฐ๋ณธ๊ฐ {setItem} ๋ฅผ ๋๊ฒจ์ฃผ๊ณ ๊ฒฐ๊ณ ๊ฐ์ด ๋ํ๋๋ result ์ฐฝ์๋ {selectItem} ๊ฐ์ ๋๊ฒจ ์ฃผ์์ต๋๋ค.
-> input์ ํ ์ผ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ onChange ์ ํจ์๊ฐ ์คํ๋๊ณ ๋ฑ๋ก button ์ ํด๋ฆญํ๋ฉด props.setData ๋ฅผ ์ฌ์ฉํด ์ ๋ณด๋ฅผ SearchResult ์ ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ฒ ๋ฉ๋๋ค.
โถLandingPage.jsx
const [selectItem, setItem] = useState(false);
<div className='LandingContainer_left'>
<InputForm setData={setItem}/>
<TodoResult getItem={selectItem}/>
</div>
โถInput.jsx
-> ์ฒ์ props๋ก ๋์ด์จ setData์ ๊ธฐ๋ณธ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ฑ๋ก๋๊ธฐ ์ ์ํ์ด๊ธฐ ๋๋ฌธ์ ์์์ ๋ณ์ flag = flase ๊ฐ์ ๋ฃ์ด ์ฃผ์์ต๋๋ค.
-> ๊ทธํ alert์ฐฝ์์ ๋ฑ๋ก์ ๋ํ ์ ๋ฌด๋ฅผ ๋ฌผ์ด๋ณธํ์ , api๋ฅผ ํ ๋นํด์ฃผ์๋ ๋ณ์ todoPost๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ ์คํ props.setData(flag) flag ์ํ๋ฅผ true ๊ฐ์ผ๋ก ๋ณ๊ฒฝํด ์ฃผ์์ต๋๋ค.
โถTodoResult.jsx
const [dataList, setDatalist] = useState([]);
{dataList.map((item, index) => (
))}
-> TodoResult ํ์ด์ง๊ฐ ๋ง์ดํธ ๋์์๋ useEffect ๋ก serarch์ ํจ์๋ฅผ ์คํํฉ๋๋ค. search ํจ์์ getTodo() ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํํ์, setDatalist ์์ ๋ฐ์์จ ๋ฐ์ดํฐ ๊ฐ์ ๋ฃ์ด ๋์์ต๋๋ค.
-> map์ ์ฌ์ฉํด์ dataList ๋ฅผ ๋ฐฐ์ด list ๋ก ๋ํ๋ด๊ฒ๋ ๊ตฌํํ์์ต๋๋ค.
-> {editingItemId === item.id ? ์ ์กฐ๊ฑด์์ ์ฃผ์ด, ์์ ํ๋ ค๊ณ ํ๋ editingItemId ์ ํ์ฌ item.id ๊ฐ ์ผ์นํ๋ฉด
-> ๋ฆฌ์คํธ์ฐฝ์ input ์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ , ์ฌ ๋ฑ๋ก ํ ์ ์๋๋ก ์ฒดํฌ ํ์ ์์ด์ฝ์ผ๋ก ๋ฐ๊ฟ์ฃผ์์ต๋๋ค.
-> ์์ด๋ ๊ฐ์ด ์ผ์นํ์ง ์์์ (์์ ๋๊ธฐ ์ ์ ๋ชจ์ต) flase๊ฐ์ ์์น์ ์๋ ์ฝ๋๊ฐ ์คํ๋ฉ๋๋ค.
-> ์์ ์ค์ผ๋ ๋ํ๋๋
->
โญ๏ธ 4) Youtube OpenApi, recoil ์ ์ฌ์ฉํ์ฌ ์์
ํ๋ ์ด๋ฆฌ์คํธ, ๋น๋์ค ํ๋ ์ด๋ฆฌ์คํธ ๋
ธ์ถ ๊ธฐ๋ฅ
->
โญ๏ธ 5) ๋ ์จ openApi๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ์์น, ํ์ฌ์จ๋ ๋ฅผ ๊ฐ์ ธ์ค๊ณ , ํ์ฌ์์น์ ๋ํ ๋ ์จ ๋ฐ์ดํฐ์ ๋ง๋ ์์ด์ฝ ์ถ๋ ฅ.
->
->
->