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..
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..
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..
๊ธฐ๋ณธ ์ฌ์ฉ 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 ์ข ๋ฅ URL Scheme ๊ณ ์ ์ฑ://์ฝํ ์ธ ์ ํํ์ด๋ค. ์ฑ์ด ๊น๋ ค์์ ๋ ํน์ ์ฑ์ ํน์ ํ์ด์ง๋ก ์ด๋ํ๋ค. ์ฑ ๋ฏธ์ค์น ์ ๋์ํ์ง ์๋๋ค. Universal Link IOS์์๋ง ๋์ํ๋ ๋ฅ๋งํฌ์ด๋ค. ์ ๋๋ฒ์ ๋งํฌ๋ ์ฑ์์ ํ์ฉํ ๋๋ฉ์ธ์ ๋ฑ๋กํด์ฃผ์ด์ผ ํ๋ฉฐ, ์น ํ๋ก ํธ์์ .well-known/apple-app-site-association ํ์ผ์ ์ ์ํ์ฌ ํ์ฉํ path๋ฅผ ์ง์ ๊ฒฐ์ ํ ์ ์๋ค. ์ ๋๋ฒ์ ๋งํฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ฐ์ผ ์น์ผ๋ก ํน์ Path์ ํ์ด์ง์ ์ ์ ์ ์ฑ ๋ด์ ํด๋น ์์น๋ก ์ ์ ๋ฅผ ์ด๋ ์์ผ์ค ์ ์๋ค. App Link ..
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๋ฅผ ํ๋ก ํธ๋ก ์ฌ์ฉํ ๋, ์ฝ๋ ์ฌ์์์ ํ๊ฒฝ๋ณ์๋ฅผ ์ด์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? ์ต์์ ํด๋์ .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..
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 ..
Comment