React

[TIL/React] 2023/06/09

loading spinner ๊ตฌํ˜„ํ•˜๊ธฐ ๐ŸŸฃ loading spinner๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ์— ์•ž์„œ, action์ด ๋ฌด์—‡์ธ์ง€ console์— ์ฐ์–ด๋ดค๋‹ค. action์€ ๊ธฐ๋ณธ์ ์œผ๋กœ '๊ฐ์ฒด'์ด๋‹ค. action ๊ฐ์ฒด ๋‚ด๋ถ€์—์„œ 'requestStatus๋ผ๋Š” key์™€ fulfilled๋ผ๋Š”

2023๋…„ 6์›” 9์ผ2min read

loading spinner ๊ตฌํ˜„ํ•˜๊ธฐ ๐ŸŸฃ

loading spinner๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ์— ์•ž์„œ, action์ด ๋ฌด์—‡์ธ์ง€ console์— ์ฐ์–ด๋ดค๋‹ค. action์€ ๊ธฐ๋ณธ์ ์œผ๋กœ '๊ฐ์ฒด'์ด๋‹ค. action ๊ฐ์ฒด ๋‚ด๋ถ€์—์„œ 'requestStatus๋ผ๋Š” key์™€ fulfilled๋ผ๋Š” value'๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœํผํ‹ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด requestStatus๋ฅผ ํ™œ์šฉํ•ด์„œ 'pending'์ผ ๋•Œ์—๋Š” loading spinner๋ฅผ ๋ณด์—ฌ์ฃผ์ง€ ์•Š๊ณ , 'fulfilled'์ผ ๋•Œ์—๋Š” UI ๋‹จ์—์„œ ๋‚˜ํƒ€๋‚˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ?

slice ํŒŒ์ผ์—์„œ ์ดˆ๊ธฐ๊ฐ’์˜ ํ˜•ํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ , pending์— ๋Œ€ํ•œ case๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” useEffect๋ฅผ ํ†ตํ•ด ํ™”๋ฉด์ด ๋ Œ๋”๋ง๋˜์ž๋งˆ์ž thunk ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค.

ํ™”๋ฉด์„ ๋„์šฐ๋Š” ์ˆœ๊ฐ„ useEffect๋ฅผ ํ†ตํ•ด thunk ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ , pending์— ๋Œ€ํ•œ case๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋•Œ requestStatus๊ฐ€ pending์ด๋ฉด ์ดˆ๊ธฐ๊ฐ’ loading์„ true๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” loading์ด true์ด๋ฉด '๋กœ๋”ฉ์ค‘'์ด๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค.

๋ณ„๊ฑฐ ์•„๋‹Œ ๊ณผ์ •์ด์—ˆ๋Š”๋ฐ ๊ฝค ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค. ์ดˆ๊ธฐ๊ฐ’์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด์„œ fulfilled์ผ ๋•Œ state.push๋ฅผ state.todo.push๋กœ ๋ณ€๊ฒฝํ–ˆ์–ด์•ผ ํ–ˆ๋Š”๋ฐ ์ด ๋ถ€๋ถ„์„ ๋†“์ณค๋‹ค. fulfilled์ผ ๋•Œ๋Š” loading์— ๋Œ€ํ•œ ์„ค์ •์„ ํ•˜์ง€ ์•Š์•˜๊ธฐ์—, ๊ณ„์†ํ•ด์„œ ๋กœ๋”ฉ ํ™”๋ฉด์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ์œ„ ์บก์ณ๋ณธ์˜ ์ฝ˜์†”์„ ๋ณด๋ฉด loading data๊ฐ€ true๋กœ ์ž˜ ๋ณ€ํ™˜๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

spinner๋Š” ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์ปดํฌ๋„ŒํŠธ์ด๊ธฐ์— src์˜ commons ํŒŒ์ผ ๋‚ด๋ถ€์— ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ–ˆ๋‹ค. keyframes๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. if ๋ฌธ ๋‚ด์— ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ ์šฉํ•˜๋ฉด, ์œ„์™€ ๊ฐ™์ด loading spinner๊ฐ€ ๋™์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.

Add Todo Area & Delete Btn ๐ŸŸฃ

์ถ”๊ฐ€๋œ Todo๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์˜์—ญ์— ๋Œ€ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € useSelector๋ฅผ ํ†ตํ•ด todo์— ๋Œ€ํ•œ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์™”๋‹ค. ํ•ด๋‹น todo๋Š” value์™€ id๋ผ๋Š” key๋กœ ๊ตฌ์„ฑ๋œ ๊ฐ์ฒด์˜ ์ง‘ํ•ฉ(=๋ฐฐ์—ด)์ด๋‹ค. ๋”ฐ๋ผ์„œ todo์˜ isDone ์†์„ฑ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 'todo๊ฐ์ฒด.value.isDone'์˜ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.

~~์œ„ ์ ‘๊ทผ์„ ํ†ตํ•ด '์™„๋ฃŒ๋˜์ง€ ์•Š์€ ํ•ญ๋ชฉ'์„ noCompleteArray๋ผ๋Š” ๋ณ€์ˆ˜์— ํ• ๋‹นํ–ˆ๋‹ค. todo์นด๋“œ์—์„œ์˜ elem์€ ๊ฒฐ๊ตญ todo๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋™์ผํ•œ ๋งค์ปค๋‹ˆ์ฆ˜์œผ๋กœ title์„ ๋ Œ๋”๋งํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ฝ˜์†”์—์„œ todo์—๋Š” ํ•ด๋‹น data๊ฐ€ ๋‹ด๊ธฐ๋Š”๋ฐ, noCompleteArray๋Š” ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. Add Click์—์„œ inputValue๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ isDone๊ณผ id์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•ด์ฃผ์ง€ ์•Š์•„์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์˜€๋‹ค.~~

์•„๋‹ˆ๋‹ค id๋Š” add๋ฅผ clickํ•  ๋•Œ ๋ณด๋‚ด์ฃผ๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋‹ค์‹œ ํŽ˜์ด์ง€ ๊ตฌ๋ถ„ ๋จผ์ € ๐ŸŸฃ

์‹œํ—˜๊ธฐ๊ฐ„ ์ด์Šˆ๋กœ ์ž ์ • ์ค‘๋‹จํ–ˆ์—ˆ๋‹ค. ๋‹ค์‹œ ์ฐจ๊ทผ์ฐจ๊ทผ ์‹œ์ž‘ํ•œ๋‹ค.

Delete button์„ ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ ๊ฐ™์€๋ฐ, ์‚ฌ์‹ค์€ ์ƒ์„ธ ํŽ˜์ด์ง€์—์„œ ์‚ญ์ œ ์ž‘์—…์„ ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์˜€๋‹ค.

๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ title์„ ํด๋ฆญํ•ด์„œ ์ƒ์„ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด, title์— ๋Œ€ํ•ด onClick event๊ฐ€ ํ•„์š”ํ•˜๊ณ  ํ•ด๋‹น event๋Š” navigate์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  main๊ณผ detail๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ฃผ์†Œ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ ์ž ํ–ˆ๋‹ค.

๊ฐ€์žฅ ๋จผ์ € input field์™€ todo field, ๋‘ ์ปดํฌ๋„ŒํŠธ๋ฅผ main์œผ๋กœ ๋ฌถ์–ด์คฌ๋‹ค.

ํŒŒ์ผ์ด ์•Œ ์ˆ˜ ์—†๋Š” ์ด์œ ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•œ๋‹ค.

More to read

AI

AI&ML ๊ธฐ์ดˆ

Reference: https://bettermesol.github.io/ml/2019/09/16/ai-ml-dl/AI: ๊ธฐ๊ณ„๊ฐ€ ์‚ฌ๋žŒ์ฒ˜๋Ÿผ ์ƒ๊ฐํ•˜๊ณ  ํŒ๋‹จํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฐ€์žฅ ๋„“์€ ๋ฒ”์ฃผ์˜ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.ML: ๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šตํ•˜์—ฌ ์Šค์Šค๋กœ ๊ทœ์น™์„ ์ฐพ์•„๋‚ด๋Š” AI์˜ ํ•œ ๋ถ„์•ผ๋กœ,

'AI Agent Economy'

Novitas : AI Agent๊ฐ€ ์ง€๊ฐ‘์„ ๊ฐ€์ง€๋Š” ์„ธ์ƒ

์–ผ๋งˆ ์ „, ๋ฏธ๋ž˜์—์…‹์ฆ๊ถŒ ๋ฆฌ์„œ์น˜ ๋ฆฌํฌํŠธ(์˜ฌํ•ด๋Š” ์ด๋”๋ฆฌ์›€์ด๋‹ค: ์—์ด์ „ํŠธ ์‹œ๋Œ€์˜ Near Automata)๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. AI Agent๋ฅผ ์ธ๊ฐ„๊ณผ ํ•จ๊ป˜ํ•  ๊ฒฝ์ œ ์ฃผ์ฒด๋กœ ๋ฐ”๋ผ๋ณด๋Š” ์‹œ๊ฐ์— ์ ์ž–์ด ์ถฉ๊ฒฉ์„ ๋ฐ›์•˜๋”๋žฌ์ฃ .ํ•œ ๊ฐ€์ง€ ์งš๊ณ  ๋„˜์–ด๊ฐˆ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ 'AI'

'ERC-8004'

Novitas: AI ์—์ด์ „ํŠธ ๊ฒฝ์ œ ์ฃผ์ฒด

Web 4.0์„ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ์ •์˜ํ•˜๋ฉด Sovereign Transact์ž…๋‹ˆ๋‹ค.AI๊ฐ€ ์ธ๊ฐ„์˜ ํ—ˆ๋ฝ ์—†์ด ์ง€๊ฐ‘์„ ์†Œ์œ ํ•˜๊ณ , ๊ฒฐ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์ธํ”„๋ผ๋ฅผ ํ†ต์ œํ•˜๋Š” ์ฃผ๊ถŒ์  ๊ฒฝ์ œ ์ฃผ์ฒด๊ฐ€ ๋˜๋Š” ์„ธ๊ณ„์ž…๋‹ˆ๋‹ค. Web 3.0์ด ๋ธ”๋ก์ฒด์ธ ๊ธฐ๋ฐ˜์˜ ํƒˆ์ค‘์•™ํ™”๋ฅผ ์‹คํ˜„ํ–ˆ๋‹ค๋ฉด, Web 4.0์€ ๊ทธ