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-query :: Query
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 10. 12:35

๊ธฐ๋ณธ ์‚ฌ์šฉ const info = useQuery('unique_key', fetchData); // fetchData๋Š” promise ๋ฐ˜ํ™˜ uniqueํ•œ key๋กœ ์ •์˜ํ•˜๋ฉฐ, key์— ๋ฌถ์ด๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ์ด๋‹ค. useQuery๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” result๋Š” ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. ์ƒํƒœ loading isLoading์ด true๊ฐ€ ๋œ๋‹ค. error isError๊ฐ€ true๊ฐ€ ๋˜๋ฉฐ, error์— ์—๋Ÿฌ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด๋‹ค. success isSuccess๊ฐ€ true๊ฐ€ ๋˜๋ฉฐ, data์— ์ •๋ณด๊ฐ€ ๋‹ด๊ธด๋‹ค. idle ์‚ฌ์šฉ ์˜ˆ์ œ const { isLoading, isError, data, error } = useQuery('key', fetchData); // const { status, data, erro..

DeepLink๋ž€? :: ์›๋งํฌ, ๋”ฅ๋งํฌ, ๋””ํผ๋“œ ๋”ฅ๋งํฌ
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 10. 12:07

์›น ํŽ˜์ด์ง€์—์„œ ์•ฑ ๋‚ด๋ถ€๋กœ ์œ ์ €๋ฅผ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด ๋”ฅ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ฆ‰, ๋”ฅ๋งํฌ๋Š” ๋ชจ๋ฐ”์ผ ์•ฑ ๋‚ด์˜ ํŠน์ • ์ฝ˜ํ…์ธ ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋งํฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. Deeplink ์ข…๋ฅ˜ URL Scheme ๊ณ ์œ ์•ฑ://์ฝ˜ํ…์ธ  ์˜ ํ˜•ํƒœ์ด๋‹ค. ์•ฑ์ด ๊น”๋ ค์žˆ์„ ๋•Œ ํŠน์ • ์•ฑ์˜ ํŠน์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค. ์•ฑ ๋ฏธ์„ค์น˜ ์‹œ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. Universal Link IOS์—์„œ๋งŒ ๋™์ž‘ํ•˜๋Š” ๋”ฅ๋งํฌ์ด๋‹ค. ์œ ๋‹ˆ๋ฒ„์…œ ๋งํฌ๋Š” ์•ฑ์—์„œ ํ—ˆ์šฉํ•  ๋„๋ฉ”์ธ์„ ๋“ฑ๋กํ•ด์ฃผ์–ด์•ผ ํ•˜๋ฉฐ, ์›น ํ”„๋ก ํŠธ์—์„œ .well-known/apple-app-site-association ํŒŒ์ผ์„ ์ •์˜ํ•˜์—ฌ ํ˜€์šฉํ•  path๋ฅผ ์ง์ ‘ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ ๋‹ˆ๋ฒ„์…œ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋ฐ”์ผ ์›น์œผ๋กœ ํŠน์ • Path์˜ ํŽ˜์ด์ง€์— ์ ‘์† ์‹œ ์•ฑ ๋‚ด์˜ ํ•ด๋‹น ์œ„์น˜๋กœ ์œ ์ €๋ฅผ ์ด๋™ ์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ๋‹ค. App Link ..

JavaScript ๋™์ž‘ ์›๋ฆฌ :: ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ๊ณผ ๋น„๋™๊ธฐ ๋™์ž‘ (feat. ๋น„๋™๊ธฐ ์ฝœ๋ฐฑ)
์›น (WEB)/๊ณต๋ถ€ 2021. 4. 1. 21:56

JS ๋™์ž‘์›๋ฆฌ js๋Š” ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์–ธ์–ด์ด๋ฏ€๋กœ ํ˜ธ์ถœ ์Šคํƒ์ด ํ•˜๋‚˜๊ณ  ํ•œ ๋ฒˆ์— ํ•œ ์ž‘์—…๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์— ๋”ฐ๋ฅธ ๋ฌธ์ œ๋Š” ํ•˜๋‚˜์˜ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ์— ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉด ๋‹ค๋ฅธ ๋กœ์ง์ด ๋ฉˆ์ถฐ๋ฒ„๋ฆฐ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋น„๋™๊ธฐ ์ฝœ๋ฐฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Ÿฐํƒ€์ž„ js ๋Ÿฐํƒ€์ž„์€ JS์—”์ง„, web api, task queue, event loop, render queue๋กœ ๋˜์–ด์žˆ๋‹ค. ์—”์ง„ js ์—”์ง„์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋Š” Google์˜ V8 ์—”์ง„์ด๋‹ค. Chrome๊ณผ Node.js์—์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. memory heap : ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น call stack : ํ˜ธ์ถœ ์Šคํƒ ์œ„์˜ ๋‘๊ฐ€์ง€๋กœ ์—”์ง„์€ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. Web API DOM, Ajax, TimeOut ๋“ฑ์˜ Web API๊ฐ€ ์ž‡๋‹ค. Callstack์—์„œ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๊ฐ€ ..

[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..

Ajax์—์„œ ํ•„์š”ํ•œ SOP(Same Origin Policy), CORS(Cross-Origin Resource Sharing) ์ •๋ฆฌ
์›น (WEB)/๊ณต๋ถ€ 2021. 2. 6. 23:07

SOP, COP Same Origin Policy document ๊ฐ์ฒด๋Š” ์ถœ์‹ ์ธ origin์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์ด๋Š” js์—์„œ `document.location.origin`์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. document ๋‚ด์—์„œ ๋ฆฌ์†Œ์Šค๋“ค๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ๋•Œ, origin์ด ๋‹ค๋ฅด๋‹ค๋ฉด ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์— ์žˆ์–ด์„œ ์ œํ•œ์„ ๋‘๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด SOP(Same Origin Policy)์ด๋‹ค. Origin ํŒ๋‹จ Origin์ด ๊ฐ™์€ ์ง€๋Š” Protocol, Host, Port๋กœ ํŒ๋‹จํ•˜๋Š”๋ฐ url ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. http://localhost:3000 Protocol://Host:Port ์„ธ ๊ฐ€์ง€๊ฐ€ ๋ชจ๋‘ ๊ฐ™์œผ๋ฉด ๊ฐ™์€ Origin์ด๋ผ๊ณ  ํŒ๋‹จ๋˜๋Š” ๊ฒƒ์ด๋‹ค. IE๋Š” ์–‘์ชฝ ๋„๋ฉ”์ธ ๋ชจ๋‘ ๋†’์Œ ๋‹จ๊ณ„์˜ ๋ณด์•ˆ ์ˆ˜์ค€์ผ ๊ฒฝ์šฐ Same Origin ..