React ๊ณต์‹ ๋ฌธ์„œ ๋‹ค์‹œ ์ฝ๊ธฐ (1. Main concepts)
์›น (WEB)/๊ณต๋ถ€ 2022. 1. 31. 20:43

Main Concepts ์ฒ˜์Œ React๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๊ฑฐ์˜ ์ดํ•ด ๋ชปํ•˜๊ณ  practice ์ •๋„๋งŒ ์ฐธ์กฐํ–ˆ์„ ๋“ฏ ์‹ถ์–ด์„œ ๋‹ค์‹œ ์ฝ์–ด๋ณด์•˜๋‹ค. ๊ฐœ๋…์„ ์ด๋ฒˆ์— ๋ช…ํ™•ํžˆ ํ–ˆ๋‹ค๊ฑฐ๋‚˜ ์ฒ˜์Œ ๋“ค์–ด๋ณธ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด์•˜๋Š”๋ฐ, Main concept์—์„œ๋„ ๊ฝค๋‚˜ ๋งŽ์•˜๋‹ค. ์ด๋ฒˆ ๊ธฐํšŒ๋กœ ํ•ด๋‹น ์ •๋ฆฌ ๊ธ€์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ณด๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค ๐Ÿ˜Š Introducing JSX React๋Š” ๊ธฐ์กด์— html, js ์™€ ๊ฐ™์ด ๊ธฐ๋Šฅ ๋ณ„๋กœ ๋ฌธ์„œ๋ฅผ ๋‚˜๋ˆ„๋˜ ๋ฐ์—์„œ ํ•œ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๊ฒŒ ํ•จ์œผ๋กœ์จ js, html(jsx), css๋ฅผ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์˜€๋‹ค. JSX์˜ ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜๋“ค์€ ๋ Œ๋” ์‹œ์ ์— ์ด๋ฏธ ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝ ๋˜๋ฏ€๋กœ XSS ๊ณต๊ฒฉ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค. Rendering Elements React๋กœ ๋งŒ๋“ค์–ด์ง„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ•˜๋‚˜์˜ root DOM ๋…ธ๋“œ๋ฅผ ..

React context ์ฝ”๋“œ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ :: ๋ฆฌํŒฉํ† ๋ง
์›น (WEB)/๊ณต๋ถ€ 2021. 9. 21. 14:11

๋ฌธ์ œ ์ƒํ™ฉ React context ์‚ฌ์šฉ ์‹œ ๊ธฐ์กด ์ฝ”๋“œ ๊ตฌ์„ฑ์ด context ๋‚ด๋ถ€ ์š”์†Œ๊ฐ€ ๋Š˜์–ด๋‚  ์ˆ˜๋ก ๋ณต์žกํ•ด์ ธ์„œ ๋ฆฌํŒฉํ† ๋งํ•˜๋ ค ํ•œ๋‹ค. ๊ธฐ์กด ๊ตฌํ˜„ // ๊ตฌ์„ฑ const UserContext = createContext({}); const SignInContext = createContextvoid>(()=>{}); export const UserContextProvider = ({ children }) => { const [user, setUser] = useState(); const signIn = () => {}; return ( {children} ); } export function useUserState() { const context = useContext(UserContext); return c..

React-query :: api fetch ์‹œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 10. 12:38

React-query : fetch, cache, synchronize, update(for server state)์— ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ๊ณต์‹์‚ฌ์ดํŠธ React Query Hooks for fetching, caching and updating asynchronous data in React react-query.tanstack.com ๋ฐฐ๊ฒฝ server state ์‚ฌ์šฉ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. caching deduping(๋ฐ์ดํ„ฐ ์ค‘๋ณต ์ œ๊ฑฐ) update "out of date" data / know when is it reflecting updates data pagination optimization, lazy loading data memory management, garba..

React-query :: Query Invalidation
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 10. 12:37

query๊ฐ€ ์˜ค๋ž˜ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ํŒ๋‹จํ•˜๊ณ  ๋‹ค์‹œ fetchํ•ด์˜ฌ ๋•Œ, queryClient.invalidateQueries ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. https://react-query.tanstack.com/guides/query-invalidation Query Invalidation Query Invalidation Waiting for queries to become stale before they are fetched again doesn't always work, especially when you know for a fact that a query's data is out of date because of something the user has done. For that purpose, the Quer..

React-query :: Mutations
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 10. 12:36

query์™€ ๋‹ค๋ฅด๊ฒŒ CUD์— ์‚ฌ์šฉ๋œ๋‹ค. https://react-query.tanstack.com/guides/mutations Mutations Subscribe to our newsletter The latest TanStack news, articles, and resources, sent to your inbox. react-query.tanstack.com ์‚ฌ์šฉ์˜ˆ์ œ const mutation = useMutation(newTodo => axios.post('/todos', newTodo)) return ( {mutation.isLoading ? ( 'Adding todo...' ) : ( {mutation.isError ? ( An error occurred: {mutation.error.mes..

React array state๊ฐ€ ๊ฐฑ์‹ ๋˜์–ด๋„ view๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š์„ ๋•Œ
์›น (WEB)/์—๋Ÿฌํ•ด๊ฒฐ 2021. 3. 14. 20:22

React array state๊ฐ€ ๊ฐฑ์‹ ๋˜์–ด๋„ view๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š์„ ๋•Œ const [members, setMembers] = useState([]); const deleteMember = (index: number) => { // member ์‚ญ์ œ const tmp = members; tmp.splice(index, 1); setMembers(tmp); } return( { members.map((member: string, index: number) => {member} } ); members๋ผ๋Š” Array state์˜ ๊ฐ’ ํ•˜๋‚˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ด๋„ ํ‘œ์‹œ๋˜๋Š” ํ•™์ƒ์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž๋„๊ตฌ๋ฅผ ํ†ตํ•ด์„œ ๋ณด๋ฉด ๋ถ„๋ช… ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ members State๋Š” ๋ณ€๊ฒฝ๋˜..

[React] React ํ™˜๊ฒฝ๋ณ€์ˆ˜, ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ์‹œ์— ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ? (Docker, github action ์‚ฌ์šฉ ์‹œ)
์›น (WEB)/๊ณต๋ถ€ 2021. 3. 14. 11:59

React ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋“ฑ๋ก ๊ธฐ์กด ๊ฐœ๋ฐœ ์‹œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ React๋ฅผ ํ”„๋ก ํŠธ๋กœ ์‚ฌ์šฉํ•  ๋•Œ, ์ฝ”๋“œ ์‚ฌ์•„์—์„œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ์ตœ์ƒ์œ„ ํด๋”์— .env ํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค. .env ํŒŒ์ผ์— REACT_APP์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค. REACT_APP_ADMIN_KEY=hi ์ฝ”๋“œ ์ƒ์—์„œ process.env.REACT_APP_ADMIN_KEY์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค! ๋ฐฐํฌ ์‹œ ํ•˜์ง€๋งŒ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ build ํ›„์—๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ฝ์–ด๋“ค์ผ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— build์™€ ๋™์‹œ์— build์— ๋Œ€ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜(argument)๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ธํŒ…ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. NERA๋Š” github action์—์„œ docker/build-push-action@v1.1.0 ์ด๋ผ๋Š” action..

[React hook] html ์š”์†Œ๋ฅผ ์ด๋ฏธ์ง€๋กœ ์ €์žฅํ•˜๊ณ , ์ด๋ฏธ์ง€ ํ˜ธ์ŠคํŒ…ํ•˜์—ฌ ์นด์นด์˜คํ†ก api๋กœ ๊ณต์œ ํ•˜๊ธฐ :: html2canvas, imgur, kakao api
์›น (WEB)/๊ณต๋ถ€ 2021. 1. 30. 00:27

html2canvas + ์ด๋ฏธ์ง€ ํ˜ธ์ŠคํŒ… *์˜ˆ์ œ๋Š” React Hook ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ table์„ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค์–ด ๊ณต์œ ํ•ด์•ผํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ์—ˆ๋‹ค. ์š”๊ตฌ์‚ฌํ•ญ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ•ด๋‚ด์•ผํ•œ๋‹ค. html table์„ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค๊ธฐ ๋งŒ๋“ค์–ด์ง„ ์ด๋ฏธ์ง€๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ ํ˜ธ์ŠคํŒ…๋œ ์ด๋ฏธ์ง€๋ฅผ ์นด์นด์˜คํ†ก api๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ณต์œ ํ•˜๊ธฐ ์ฐจ๋ก€๋Œ€๋กœ ํ•ด๋ณด์ž. html table์„ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค๊ธฐ DOM์š”์†Œ๋ฅผ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค ๋•Œ, html2canvas๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ฃผ๋กœ ์“ฐ์ธ๋‹ค. import html2canvas from 'html2canvas'; const copyDOM = async () => { window.scrollTo(0, 0); let url = ""; await html2canvas(..