๋ฒ์จ ์ฌ๋ฆ์ด๋ผ๋!
๋ด๊ฐ ํ๋ก ํธ ๊ฐ๋ฐ์ ์ฃผ๋์ด๋ผ๋!
๋ฒ์จ ์ ์ฌํ์ง ์ฝ 1๋ ์ด ๋์ด๊ฐ๋ค. ๊ทธ๊ฐ ๋ง์ ๋ณํ๊ฐ ์์์ง๋ง ์ ๋ฆฌ๊ฐ ๋๋ฌด ์๋์ด ์์ด ์ฐ๋ ๊ธโ๏ธ
๋ชฉ์ฐจ
| ์ ๊ท ์๋น์ค ์คํ
| ์ฝ๋์ค์ฟผ๋ ํ๋ก ํธ์๋ ๋ฆฌ๋ทฐ์ด
| ๊ฐ๋ฐ ๊ธฐ์ด ๋ค์ง๊ธฐ
| ๊ฑด๊ฐํ ๋ง์๊ณผ ๋ชธ ๋ง๋ค๊ธฐ
๐ ์ ๊ท ์๋น์ค ์คํ
์ง๋ ๋ฌ์ webview ์ ๊ท ์๋น์ค๋ฅผ ์คํํ๋ค.
์ค๊ณ ๊ฑฐ๋์ ํ์ํ ๋ ธํ์ฐ๋ ๊ด๋ จ ์ง์์ ๋ํด ์๊ฐํ๋ ์ปค๋ฎค๋ํฐํ ์๋น์ค์๋๋ฐ
๋๊ธ ๊ธฐ๋ฅ๊ณผ 2depth์ ์นดํ ๊ณ ๋ฆฌ 22์ข ์ด ํฌํจ๋ 6ํ์ด์ง ์ ๋์ ์น์ฑ ํ๋ก์ ํธ์๋ค.
๊ธฐ์ ์คํ | ํ์ด์ง ๊ตฌ์ฑ |
TypeScript react-query recoil |
๋ฉ์ธ ๊ฒ์ ์นดํ ๊ณ ๋ฆฌ ์์ธ ๋๊ธ ์ ์ ์์ฒญ |
๊ธฐ์กด ์ธ์ ํด์ฌ ํ, ํ๋ฃจ๊ฐ ๋ค๋ฅด๊ฒ ์ ๊ท ์ธ์์ด ๋ค์ด์๊ณ , ๋๋ ์ธ์์ธ๊ณ์ ํ๋ก์ ํธ ๋ฆฌ๋์ ์ ์ ์ด ํผ๋ฏธํ๋ค.
์ฝ๋ก๋์ ๊ฑธ๋ ธ์ง๋ง ํ๋ก ํธ ๊ฐ๋ฐ ์ฐ์ ํ์์ ์ฐธ์ฌํด์ผ ํ๊ณ , (์ด๊ฑฐ๋ผ๋ ์ํ์ผ๋ฉด FRONT๋ถ๋์ด ์ด๋๊น์ง ํฝ์ฐฝํ ์ ์์์ง ๊ถ๊ธํ๊ธด ํ๋ค.)
์ฒ์์ ํ๋ก ํธ ๋ด๋น์๊ฐ ๋ ํผ์์๊ธฐ ๋๋ฌธ์ ํ ํ์์๋ ์ผ์ ์ฐ์ถ๊ณผ ๊ธฐ์ ์ ํ๊ณ๋ค์ ์ง๋ฌธํ๋ค.
์ค์๊ฐ ํ์์์ ์๋ ์ง๋ฌธ๋ค์ด ๋น๋๊ธฐ์ ์ผ๋ก ๋ ์์๊ธฐ ๋๋ฌธ์, ์ค ์๋น์ค ๊ฐ๋ฐ ๊ฒฝํ์ด ์์๋ ๋๋ก์๋ ๋งค์ฐ ํผ๋์ค๋ฌ์ ๋ค.
- ํด๋น ๊ธฐ๋ฅ์ด ๊ธฐ์ ์ ์ผ๋ก ๊ตฌํ ๊ฐ๋ฅํ์ง
- ๊ฐ๋ฅํ๋ค๋ฉด ์ธ์ ๊น์ง ๊ฐ๋ฅํ์ง
๋์ค์ ํ์ฅ๋๊ป help์์ฒญํด ์ ๊ท ์ ์ฌ 2๋ถ์ด ํฌ์ ํด์ฃผ์ จ๊ณ , due ๋ฐ์ดํธ๊ฐ ์ด๋ฐํ ์ํฉ์์ ํ์คํ ๋ฆฌ ๊ด๋ฆฌ์ ์ธ์์ธ๊ณ๊น์ง ๊ด๋ฆฌํ๋๊น ์ ๋ง ์ ์ด๋์ ํผ๋ฌ๋ค.
โ๏ธ ๊ธฐ์ ์ ์ธ ๊ณ ๋ฏผ๋ค
์ด ํ๋ก์ ํธ๋ ๊ธฐํ ์ webview๋ก๋ง ๋ ธ์ถ๋๋ ์๋น์ค์๊ณ , ๊ทธ๋ก ์ธํด ๋ค์ํ ์ด์๊ฐ ์์๋ค.
1. ์น ์ฑ๊ฐ interface์ ๋ฆฌ ๋ฐ ์ฒ๋ฆฌ
์น๋ทฐ ํ์ด์ง ๊ณตํต Header์ ๋ค๋ก๊ฐ๊ธฐ๊ฐ ์ง์ ์์ ์ ๋ฐ๋ผ ๋ถ๊ธฐ์ฒ๋ฆฌ ๋์ผ ํ๋ค.
์ด ์๋น์ค๋ webview์ ํ์ ์ ์ด๋ผ ์ง์ ์ ์ด ๋ช๊ฐ์ง๋ก ์ขํ์ก๋๋ฐ,
- ๋ค์ดํฐ๋ธ ์ฑ ํ๋ฉด์์ ํต๋ฉ๋ด๋ก ์ ๊ทผ
- ๋ค์ดํฐ๋ธ ์ฑ ์ํ ์์ธ์์ ๊ด๋ จ ๋ฌธ์ ์์ธ ๋ฒํผ์ผ๋ก ์ ๊ทผ
- ๋ค์ดํฐ๋ธ ์ฑ ๊ฒ์์์ ๋ฌธ์ ๊ฒ์์ผ๋ก ์ ๊ทผ
- ์นด์นด์คํก ๊ณต์ ํ๊ธฐ๋ฅผ ํตํ ๋ฌธ์ ์์ธ ์ ๊ทผ
webveiw์ Header๋ webview๊ณตํต์ผ๋ก ๋ชจ๋ ๊ณณ์์ ์ฌ์ฉ๋๊ณ ์์๊ธฐ ๋๋ฌธ์
๊ธฐ์กด์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ผ๋ฉด์๋ ์กฐ๊ฑด์ ๋ง๋ ๋ถ๊ธฐ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค.
๊ธฐ์กด
react-router-dom์ history.goBack ์ ์ฌ์ฉ
import { useHistory } from 'react-router-dom';
const { history } = useHistoryHook();
const goBack = () => {
history.goBack();
}
history goback์ web์์์ ๋ค๋ก๊ฐ๊ธฐ ๊ธฐ๋ฅ์ผ๋ก ๋์ํ๋๋ฐ
๐ค ๋ง์ฝ ๋ด๊ฐ ์๋น์ค ๋ฉ์ธ์ด ์๋ ์ฑ์ ํน์ ํ๋ฉด์์ ์ง์ ํ๋ค๋ฉด?
์ ์์์ค "2. ๋ค์ดํฐ๋ธ ์ฑ ์ํ ์์ธ์์ ๊ด๋ จ ๋ฌธ์ ์์ธ ๋ฒํผ" ์ผ๋ก ์ ๊ทผ ์ํฉ์ด๋ผ ๊ฐ์ ํ์
์ฌ์ฉ์์ ์๋๋ฆฌ์ค๋ ์๋ ๋๊ฐ์ง๋ก ๋๋๊ธฐ๋๋ฌธ์
- ๋ค์ดํฐ๋ธ ์ฑ ์ํ์์ธ -> wiki ๋ฌธ์ ์์ธ -> (๋ค๋ก๊ฐ๊ธฐ) -> ์ฑ ์ํ์์ธ
- ๋ค์ดํฐ๋ธ ์ฑ ์ํ์์ธ -> wiki ๋ฌธ์ ์์ธ -> ๋ค๋ฅธ ๋ฌธ์ *10 -> (๋ค๋ก๊ฐ๊ธฐ *11 ) -> ์ฑ ์ํ์์ธ
๋ค๋ก๊ฐ๊ธฐ๊ฐ ๋จ์ํ web์ ๋ค๋ก๊ฐ๊ธฐ๊ฐ ์๋๋ผ webview๋ฅผ ๋๊ณ ๋ค์ ์ฑ์ผ๋ก ๋์๊ฐ๋ ๊ธฐ๋ฅ๋ ์์ด์ผ ํ๋ค.
๋ณ๊ฒฝ
๋ค๋ก๊ฐ๊ธฐ ํ์๋ ๋ณํ๊ฐ ์๋ค๋ฉด closewebview interface๋ฅผ ์๋๋ก ๋ณ๊ฒฝํ๋ค.
history length๋ฅผ ์ด์ฉํ๋ ค๊ณ ๋ ํ์ง๋ง ๋ค๋ก๊ฐ๊ธฐ๋ก ์ธํด length๊ฐ ๋ณํ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ํด๋น ๋ฐฉ๋ฒ์ผ๋ก ์งํํ๊ณ ,
์ถํ ๋ ์ข์ ๋ฐฉ๋ฒ์ ์ฐพ์ ์์
const goBack = () => {
history.goBack();
const prevPage = window.location.href;
setTimeout(() => {
if (window.location.href === prevPage) {
AppInterface.closeWebView();
}
}, 200);
};
2. ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์
1. flex gap ์ Safari on iOS 14๋ฒ์ ์ดํ ํธํ ๋ฌธ์
iOS 14๋ฒ์ ์ดํ์์ flex gap ์ฌ์ฉ์ ์ง์ํ์ง ์๋๋ค ..^^
2. safari์ new Date๋ (yyyy-mm-dd) ํฌ๋งท์ ์ง์ํ์ง ์๋๋ค
๊ฒฝ๊ณผ ์๊ฐ์ ๋ํ๋ด๋ getElapsedTime ์ ์ธ์๊ฐ yyyy-mm-dd ๋ฅผ ๋ฐ๊ณ ์์๋๋ฐ
Safari ๋ธ๋ผ์ฐ์ ์์๋ new Date๊ฐ (yyyy/mm/dd )์ ํํ๋ฅผ ๋ฐ์์ผ ํ๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ - -> / ๋ก replaceํ๋ ๊ณผ์ ์ ์ถ๊ฐํ๋ค.
๊ธฐ์กด
export const getElapsedTime = (date: string): string => {
const createdTime = new Date(date);
const current = new Date();
const gapMin = Math.floor(
(Number(current) - Number(createdTime)) / 1000 / 60,
);
๋ณ๊ฒฝ
export const getElapsedTime = (date: string): string => {
const createdTime = new Date(date.replace(/-/g, '/'));
const current = new Date();
const gapMin = Math.floor(
(Number(current) - Number(createdTime)) / 1000 / 60,
);
3. iOS์ Android์ scroll ์์น ๊ธฐ์ต ๋ฐฉ์
์์ธ ๋ด์ฉ ๊ฐ์ ๊ฒฝ์ฐ ๋ด์ฉ์ด ๊ธธ์ด์ง ๋๋ฅผ ๋๋นํ์ฌ ๋๋ณด๊ธฐ ์ ๊ธฐ ๊ธฐ๋ฅ์ด ์๊ณ default๋ ํผ์ณ์ ธ ์๋ ์ํ์๋ค.
๋ฌธ์ ๋ ๋๋ณด๊ธฐ์ ์ ๊ธฐ๋ฅผ ํ ๋ ์๋๋ก์ด๋์ iOS๊ฐ ์คํฌ๋กค ์์น๋ฅผ ์ ์ฅํ๊ณ ๋ฐํํ๋ ๋ฐฉ์์ด ๋ค๋ฅด๋ค๋ ๊ฒ์ด๋ค.
์๋๋ก์ด๋๋ ์ ๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ์ฝํ ์ธ ๊ฐ ๊ฐ๊ฐ๋ ์ํ์ ์คํฌ๋กค ์ํ๋ฅผ ๊ธฐ์ตํด์ ํด๋น ์์น๋ก ์ด๋๋๋ ํํธ
iOS๋ ์ปจํ ์ธ ๊ธธ์ด์ ์๊ด ์์ด ์ง๊ธ ๋ด.์์น์ ๋จธ๋ฌด๋ฅธ๋ค๋ ๊ฒ.
์๋ ์ฒจ๋ถํ ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ฉด ์ดํดํ๊ธฐ์ ์ฉ์ดํ๋ค.
๊ธฐ์กด
๋ฒํผ ํด๋ฆญ ์ ์์ธ ์ค๋ช ์์ญ์ ํ ๊ธํ๋ ๊ธฐ๋ฅ๋ง ์์๋ค๋ฉด,
const handleDescMoreBtn = () => {
setIsDescOpen(!isDescOpen);
};
๋ณ๊ฒฝ
์ ๊ธฐ click์ user ๊ธฐ๊ธฐ ๊ด๊ณ ์์ด ๊ฐ์ ์์ญ์ผ๋ก ๊ฐ๋๋ก ์ค์ ํ๋ค.
const handleDescMoreBtn = () => {
setIsDescOpen(!isDescOpen);
// ๊ฐ์ '์ ๊ธฐ' click ์ ๊ฐ์๋ก ์ด๋
if (isDescOpen && descRef.current)
window.scrollTo(0, descRef.current.offsetTop);
};
4. iOS์ long touch ๋ง๊ธฐ
iOS์ ๊ฒฝ์ฐ ํน์ ์์๋ฅผ ๊ธธ๊ฒ ๋๋ฅผ ๊ฒฝ์ฐ ํด๋น web์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ์ด๋ฆฌ๋๋ฐ, ์ด๊ฑด ์ํ์ง ์๋ ๊ธฐ๋ฅ์ด์๋ค.
๊ด๋ จ ์ด์๋ ์๋ ๊ฒ์๊ธ์ ํตํด ์ ๋ฆฌํ๋ค.!
https://rrecoder.tistory.com/230
3. react-query ๋์
๊ธฐ์กด์๋ useAxios๋ผ๋ hook์ ๋ฐ๋ก ๋ง๋ค์ด ์ฌ์ฉํ page๋จ์์ hook์ผ๋ก api ์์ฒญํ๋ ๋ฐฉ์์ด์๋๋ฐ,
์ ์ฒด์ ์ธ web ์ต์ ํ๋ฅผ ์งํํ๋ฉฐ, react-query์ ์ฅ์ ์ ๋๋ ๋ฐ ์๋ฒ์ ์ผ๋ก ์ ๊ท ์๋น์ค์ ๋จผ์ ๋์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
- ํ๋ก ํธ์ ์๋ฒ ๋ฐ์ดํฐ์ ์ํ ๋ถ๋ฆฌ
- cache ๋ฑ ๋ค์ํ option์ ํตํ ์ต์ ํ
react-query๋ ๊ฐ๋จํ ์ค๋ช ํ์๋ฉด,
์๋ฒ์์ ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ queryClient์ ์บ์ฑํด๋๊ณ ํ์์ ๋ฐ๋ผ component์์ ์ ์ญ ์ํ์ฒ๋ผ ๊ทธ ๊ฐ์ ๊ฐ์ ธ์ ์ฌ์ฉํ ์ ์๋ ์๋ฒ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
๐ ์ฐธ๊ณ https://react-query.tanstack.com/overview
๋ค์ํ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋๊ธ ํ์ด์ง ๊ตฌํ
react query๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋์ ํ๋ฉด์,์๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋๊ธ ํ์ด์ง๋ฅผ ๊ตฌํํด์ผํ๋ค
- ๋ฌดํ ์คํฌ๋กค
- ๋ก๊ทธ์ธ ์ฌ๋ถ ์ฒดํฌ ํ ๋ค์ดํฐ๋ธ ์ฑ ๋ก๊ทธ์ธ ์์ฒญ interface
- ๋๊ธ type์ ๋ฐ๋ฅธ filtering
- ๊ณต๋ฐฑ ( Enter , Space๋ง ๋ถ๊ฐ) , ๊ธ์์ 1000์ ์ ํ
๋ฌธ์ ๋ ๋๊ธ์ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ๋ผ ์๋กญ๊ฒ ํ์ด์ง๋ฅผ refetch ํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ
๋๊ธ type(3๊ฐ์ง)์ด ๋ฐ๋ ๋๋ง๋ค infinite scroll์ ๋ค์ ๋ณด์ฌ์ฃผ์ง๋ง ๋ค๋ก๊ฐ๊ธฐ ์ ์ง์ ์ ๊ฐ์ ธ์จ scroll ๊ฐ์ ๊ธฐ์ตํด์ผ ํ๋ฏ์ด
โจ ์บ์ฑํ ๋ถ๋ถ๊ณผ ํ์ง ์์์ผ ํ ๋ถ๋ถ์ ๊ตฌ๋ถ์ด ํ์คํด์ผํ๋ค.
๋ง์ฃผํ ๋ฌธ์ ์ ๋ค
- ์ฌ์ฉ์๊ฐ ๋๊ธ์ ์์ ,์ญ์ ํ์ ๋ ํ์ด์ง์ ๋ฐ๋ก ๋ฐ์๋์ง ์์
- ๋๊ธํ์ด์ง๊ฐ ์๋, ๋จ์ํ ๋๊ธ์ด 1๊ฐ๋ผ๋ ํฌํจ๋ ํ์ด์ง์ ์บ์ฑ์ฌ๋ถ๋ ์ ๊ฒฝ์จ์ผ ํจ
- ๋ฌดํ ์คํฌ๋กค๋ ์์ฒญํ type๊ณผ page์ ๋ฐ๋ฅธ query key๊ด๋ฆฌ๋ฅผ ์ํด์ผ ํจ
ํด๊ฒฐ ๋ฐฉ์
- ์ฌ์ฉ์๊ฐ ๋๊ธ์ ์์ ,์ญ์ ํ์ ๋ ํ์ด์ง์ ๋ฐ๋ก ๋ฐ์๋์ง ์์
- ์ฌ์ฉ์์ ๋๊ธ CRUD๊ฐ ์๋ ๊ฒฝ์ฐ queryClient์ invalidateQueries ๋ฅผ ์ด์ฉํด query ์บ์ invalidate ์ ์ค์ ํจ
- ๋๊ธํ์ด์ง๊ฐ ์๋, ๋จ์ํ ๋๊ธ์ด 1๊ฐ๋ผ๋ ํฌํจ๋ ํ์ด์ง์ ์บ์ฑ์ฌ๋ถ๋ ์ ๊ฒฝ์จ์ผ ํจ
- ์ฌ์ฉ์์ ๋๊ธ CRUD๊ฐ ์๋ ๊ฒฝ์ฐ์ ํด๋น ํ์ด์ง์ ์๋ก์ด ๋ด์ฉ์ด ๋ฐ๋ก ๋ณด์ฌ์ ธ์ผ ํ ๊ฒฝ์ฐ๋ฅผ ๋ชจ์ ์บ์ invalidate ์ค์
- ๋ฌดํ ์คํฌ๋กค๋ ์์ฒญํ type๊ณผ page์ ๋ฐ๋ฅธ query key๊ด๋ฆฌ๋ฅผ ์ํด์ผ ํจ
- react-query๋ data์์ฒญ์ query key๋ก ๊ตฌ๋ถํ๊ธฐ ๋๋ฌธ์ type๊ณผ page๋ฅผ ๊ตฌ๋ถ๊ฐ์ ์ ํํ ๋ฃ์ด์ค์ผ ํจ
>> invalidateQueries ์์
// ๋๊ธ ์์ ์์ฒญ handler
const handleCommentEditrequest = async () => {
// put์์ฒญ
await putWikiInfo({
}),
});
queryClient.invalidateQueries(['wikiComment', documentSeq, curCommentType]);
history.goBack();
};
์ด์ฒ๋ผ react-query๋ ๋ค์ํ query option์ ํตํด ์บ์ฑ ๊ฐ์ ๊ฐ์ ธ์ฌ์ง, ์๋ฒ ์ํ๋ฅผ ๋ค์ ๊ฐ์ ธ์ฌ์ง๋ฅผ ๊ฒฐ์ ํ ์ ์์ผ๋ฉฐ,
queryClient๋ฅผ ์ง์ ์กฐ์ ํ ์ ์์ด ํ ๋ด์์๋ ๊ธ์ ์ ์ธ ๊ฒฐ๋ก ์ ์ป์๋ค. ๋ฌผ๋ก ๊ณ ์์ ํ๋ค .
ํ์ ์ ๊ณ ๋ฏผ
์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ๋ฆฌ๋ฉ(?)ํ๋ฉด์ ๋ผ์ ๊น์ด ๋ฐฐ์ด ์ ๋ค์ด ์๋ค.
โ ํ ๋ถ์์ ํ์ ์ ๊ฐ๋ฐ ๊ณต์์ ๋ํ ์ง๋ฌธ์ ์ด๋ป๊ฒ ์๋ตํด์ผ ํ ๊น?
๊ทธ ์๋ฆฌ์์ ๋จ์ธํ์ง ์๊ณ ์ ๋นํ ์๊ฐ์ ๊ฐ์ง ํ์ ๊ตฌ์ฒด์ ์ผ๋ก ํ์ tool์ ์ด์ฉํด ์ ๋ฌํ์
๋๋ ์์ง ์ ํํ๊ฒ ์ผ์ ๊ณต์๊ฐ ํ์ธ๋์ง ์๋ ์ด์ฌ์์์ ์์ง ๋ง์, ๊ทธ๋ฆฌ๊ณ ์ต๊ด์ ์ผ๋ก ํ์คํ์ง ์์ ์ผ์ ์ ๋จ์ธํ๋ค ๋ณด๋ฉด ๋ถ๋ช ์ค์ฐจ๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ๋ฐ์ํ ๊ฒ์ด๊ณ , ๋์ ๋ํ ์ ๋ขฐ๋๋ ๋จ์ด์ง๊ธฐ ๋ง๋ จ์ด๋ค.
โ ํฐ ํ๋ก์ ํธ์ ๊ณต์๋ ์ด๋ป๊ฒ ๋ถ๋ฆฌํด์ ์ผ์ ์ ์งค๊น?
ํ์ด์ง๋ฅผ ํฌ๊ฒ ์ธ๊ฐ์ง๋ก ๋๋์ ๊ทธ๋ฆฌ๊ณ ๊ฐ ์ผ์ ์ ์ง๋๊ฒ
- UI
- ๋ก์ง
- ๋ฆฌํฉํ ๋ง
์ฌ๊ธฐ์ ์ฃผ์ํ ๊ฒ์ ํด๋น ํ์ด์ง์ ์๋ก์ด ๊ธฐ์ ์ ๋์ ํ๋์ง, user ์ ํจ ์ฒดํฌ์ ๊ฐ์ ํ์ ์ ๋ณด๊ฐ ํ์ํ์ง๋ฅผ ํ์ ํ๋๊ฒ ์ค์ํ๋ค.
๊ธฐํ ๋ณ๊ฒฝ๊ณผ api ๊ฐ๋ฐ์ ๋๋ ์ด๋ ์ธ์ ๋ ์ง ๋ฐ์ํ ์ ์๋ค๋ ์ ๋ช ์ฌ!
โ์ ๋ฌด์ ์์ฌํต์ ์ด๋ป๊ฒ ํ๋๊ฒ ์ข์๊น?
๋ช๋ฒ์ ๋ฏธํ ์ ๊ฑฐ์น๋ฉฐ ์๋ก์ ์ ๋ฌด ๋ฐฉ์์ ๊ณต์ ํ๊ณ ๊ฐ์๊ฐ ์ผํ๋ ๋ฐฉ์์ ๋ํด ์ดํดํ๊ฒ ๋์๋ค.
์ค์ ๋ก ๊ธฐ์กด์๋ ๋์์ธํ๊ณผ ๊ฐ๋ฐํ์ ์ค์ง์ ์ผ๋ก ์ด๋ป๊ฒ ์ผํ๊ณ ์๋์ง ๊ณต์ ๊ฐ ๋์ง ์์๋ค.
๊ทธ๋ก ์ธํด ๋ณ๋ค๋ฅธ ๊ณต์ ์์ด figma์ ๋์์ธ ์์์ด ๋ณ๊ฒฝ๋๋ฉด ๊ฐ๋ฐํ์์ ๋์ณค๊ณ ,
๋ ๋ช๋ช ๊ฐ๋ฐ ์ฐ์ ์์์ ๋ํ ๊ณต์ ๊ฐ ๋ถ์กฑํด ๋์์ธํ์์๋ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ์ด์ง๋ถํฐ ๋์์ธ์ ์์ํด ์ผ์ ์ด์๋ฅผ ๊ฒช์๋ค.
๋ ๋์์ธํ๊ณผ์ ์์ฌ์ํต ์์๋ ๋ฐฑ๋ง๋ data๊ตฌ์กฐ์ ์ค๊ณ๋ณด๋ค ํ๋์ ์๊ฐ์ ์ธ ์๋ฃ๊ฐ ํจ์ฌ ํจ์จ์ ์ด๋ผ๋๊ฑธ ๊นจ๋ฌ์๊ณ
์ด๋ ๋์์ธ ํ์๋ง ์ ์ฉ๋๋๊ฒ ์๋๋ผ
์์ฌ ์ํต ์์๋ ์๋์ ์ดํด๋์ ์ํ๋ฅผ ํ์ ํ๊ณ ํด๋น ํ์์ ์ฌ์ฉํ๋ ์ฉ์ด ์์ฃผ๋ก ์ํตํ๋ ๊ฒ๐ ์ด ์ข์ ๋ฐฐ๋ ค๋ผ๋๊ฑธ ๋ฐฐ์ ๋ค.
๐ ์ฝ๋์ค์ฟผ๋ ํ๋ก ํธ์๋ ๋ฆฌ๋ทฐ์ด
๋๋ 2021 ์ฝ๋์ค์ฟผ๋ ํ๋ก ํธ์๋ ๋ง์คํฐ์ฆ ์กธ์ ์์ด๋ค!
๋ด๊ฐ ์กธ์ ํ ๊ฒ๋ ์๊ทธ์ ๊ฐ์๋ฐ ๋ฒ์จ 2022 ๊ต์ก์๋ค์ด ์๋ค๋๊ฒ ๋๋ฌด ๋๋ผ์ ๋๋ฐ,
๋ง์คํฐ์ฆ ์กธ์ ์ ์ค์ ์ฝ๋๋ฆฌ๋ทฐ์ด๋ฅผ ๋ชจ์งํ๋ค๋ ์์์ ๋ณด๊ณ ์ง์ํ์ฌ ์ฝ 3๊ฐ์ ์ ๋ ํ๋ํ๋ค.
๋ฆฌ๋ทฐ์ด ํ๋์ ํตํด ๋๋์
๋ฆฌ๋ทฐ์ด ํ๋์ ํ๋ฉด์ ๋ด๊ฐ ๋ฐฐ์ด๊ฒ ์ ๋ง ๋ง์ผ ๋๋์ด๋ค.
ํด๋น ์๊ธฐ์ ๋ด๊ฐ ์ด๋ค ๋ง์๊ฐ์ง์ ๊ฐ์ง๊ณ ์์๋์ง ์๊ธฐ ๋๋ฌธ์ ๊ต์ก์ ๋ถ๋ค์ ๋ถ์ํ๊ณ ์ง์ณค๋ ๋ง์์ด ์ดํด๊ฐ ๊ฐ๊ณ ,
๊ทธ๋งํผ ๋ ์ด์ ์ ์ผ ์ ์๋ ์๊ธฐ๋ผ๋๊ฑธ ์๊ธฐ์ ๋ฆฌ๋ทฐ ํ๋์์ ๋ค์ํ ๋ด์ฉ์ ๊ณต์ ํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๋ค.
๋ฆฌ๋ทฐ ๋ด์ฉ์ ๊ต์ก์ ๋ถ๋ค์ ์ง๋ฌธ ํน์ ์ฝ๋ ์ ์ฒด์ ๋ํ ๊ฐ์ ์ฌํญ๊ณผ ๋๋์ ์์ฃผ์๋๋ฐ,
ํ์คํ์ง ์์ ๋ด์ฉ์ ์ ๋ฌํ๊ธฐ๋ฅผ ์ง์ํ๋, (์ด์ฉ๋ฉด ๊ฐ์ฅ ๊ถ๊ธํ ) ํ์ ์์์ ๊ฒฝํ์ ๋ น์ฌ๋ด๋ ๋ฐฉ์์ผ๋ก ๋ฆฌ๋ทฐ์ ๋ฐฉํฅ์ฑ์ ์ ํ๋ค.
์ ๋ง ๋์กฐ์ฐจ๋ ์๊ณ ์์๋ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ๊ฐ์ ๊ฒ๋ค์ ์ง๋ฌธ์ ๋ง์ด ํด์ฃผ์ ๋๋ถ์,
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ก์ ๋น์ฐํ๊ฒ ์๊ฐํด์๋ ๊ฒ๋ค์ ๋ฌผ์ํ๋ฅผ ๋์ง ์ ์๋ ๊ธฐํ์๋ค.
์ถ๊ฐ๋ก ์ฝ๋์ค์ฟผ๋ ์ ๋ง ์ถ์ฒํ๊ธฐ๋ ์ ์ํ ์ ๋๋ก ์ข์ ๊ฒฝํ์ด๋ผ์ ๋งํฌ๋ ๋จ๊น๋๋ค ๐
์ฝ๋์ค์ฟผ๋ ํ๊ธฐ : https://rrecoder.tistory.com/217
๐ ๊ฐ๋ฐ ๊ธฐ์ด ๋ค์ง๊ธฐ
์ต๊ทผ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ํ ๊ณต๋ถ๊ฐ ํ์ ํ ๋ถ์กฑํ๋ค๋ ์ ์ ๋๊ผ๋ค.
์ถํด๊ทผ๊ธธ (๋ฌผ๋ก 30๋ถ์ ๋๋ก ์ผ๋ง ์๋จ^^) ์ ํ์ฉํด๋ณด๊ธฐ๋ก ๊ฒฐ์ฌํ๋ค.
์๋๋ ์ถํด๊ทผ๊ธธ์ ๋ญ ๊ฐ๋ฐ ๊ด๋ จ ๊ฐ๋ฒผ์ด ์์์ ํ๋์ฉ ๋ณด๋๊ฑธ ๋ชฉํ๋ก ํ์๋๋ฐ,
์์ ๋ฆฌ์คํธ๋ ๋๋ถ๋ถ์ ์ฃผ๋์ด ๊ฐ๋ฐ์๋ค์ด ๋ณด๋ ์ ํ๋ฒ ์ค์น๋๋ค์ ๋ณด๊ฑฐ๋, ํน์ ๊ฐํน ํ์ฌ์์ ์งํํ๋ ์ ๊ท ํ๋ ์์ํฌ์ ๋ํ ์ค๋ช ์ด๋ ์๊ฐ ์์์ ๋ณด๊ณค ํ๋๋ฐ, (์๋ ๋งํฌ ์ฐธ๊ณ !)
์ถํด๊ทผ๊ธธ์ ๋ณด๋ ์ ํ๋ธ ๋ชจ์
๐ ๋ชจ์์ค ๋ค์ ์ฝ๊ธฐ
์ธ์ ๋ถํด๊ฐ ๋ญ ๋ณผ์ง ๊ณ ๋ฏผํ๋๋ฑ์ ๋ถํ์ํ ์๊ฐ๋ญ๋น๊ฐ ๋๋ ๊ฒ ๊ฐ๊ณ ํ์ต ๊ณผ์ ์ด ๊ฐ์ํ ๋๋๊ฑธ ๋ณด๊ณ ์ถ์ด์
์์ดํจ๋๋ก ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฅ๋ค์ด๋ธ๋ฅผ ์ฝ๊ธฐ ์์ํ๋ค.
๋ชจ์์ค๋ ์ฌ์ค ์ ์ ์คํฐ๋ํ๋ฉด์ ์ฝ์์๋๋ฐ, ๋ค์ ์ฝ์ด๋ณด๋ ์๋กญ๊ฒ ์ดํด๋๋ ๋ถ๋ถ์ด ๋ง์์ ๋๋ผ์ ๋ค.
์ฌ์ค ๊ทธ ๋น์์๋ ์ ๋ง์ ๋ง ๋ฌด์จ ๋ง์ธ์ง ๋ชจ๋ฅด๊ฒ ๊ณ , ํ๋๋ฅผ ๊ณต๋ถํ๋ ค ํด๋ ์ฐ๊ด๋ ์ง์๋ค ์ ๋ถ๋ฅผ ๋ชฐ๋ผ์ ๊ผฌ๋ฆฌ๋ฅผ ๋ฌด๋ ํ์ต์ ์ง์ณค์๋ค.
๊ทผ๋ฐ ๋ค์ ๋ง์์ ๊ฐ๋ณ๊ฒ ๋จน๊ณ ์ฐจ๋ถํ ์ฝ์ด๋ณด๋ ํจ์ฌ ์ดํด๊ฐ ์๋๋ ๊ฒ์ด๋ค!
๋ง์น ์ด๋ฆฐ์์ ์์ค์ฒ๋ผ, ์๊ฐ์ ๋๊ณ ์ฝ์ด์ค์ผ ํ๋ ์์ ์ธ ๋ฏ ํ๋ค.
๋ชจ์์ค ์ฝ์ผ๋ฉด์ ์๊ฒผ๋ ์ ..
๋์ ๋ ๋๋ณด๋ธ ์์๋ค์๊ฒ ๋งค์ฐ ๋ฏธ์ํ ๋ถ๋ถ์ด๋ค...
๐ ๊ฑด๊ฐํ ๋ง์๊ณผ ๋ชธ ๋ง๋ค๊ธฐ
๐๏ธโ๏ธ์ต๊ด์ ํฌ์ค
์ต๊ทผ์ ์ด๋์ ์ด์ฌํ ํ๊ณ ์๋ค.
์ฌ์ค PT๋ ์ง์๋ถํฐ ํ์๋๋ฐ ์ด์ฌํ ์ํ๋ค๊ฐ, ๊ฐ์๊ธฐ ์ด์ฌํ ํด๋ณด๊ณ ์ถ์ด์
์๋จ๋ ์ข ํ๊ณ , ์ด๋๋ ์ฃผ4์ผ์ ๋ ๊ฐ๋๋ ์ฒด์ง๋ฐฉ์ด 1ํค๋ก ๋น ์ก๋ค.!!!!
์ข ๋๋ฆฌ๊ฒ ๋น ์ง๋ ์ค์ด๊ธด ํ์ง๋ง ์ด์ฌํ ํ๊ธฐ๋ก ๋ง์ ๋จน์ผ๋, ํ์ ํฌ์ค๋ฅผ ํ๊ณ ์ถ์ ๋ง์์ด ์๊ฒจ์
์ค์ค๋ก๋ ์ง์น์ง ์๊ฒ ์๊ธ์กฐ์ ์ ํ๊ณ ์ถ์ ๋ง์์ด๋ค.
๊ฐ์ฅ ์ต๊ทผ์ ๋ฌ์ฑํ ์ผ์ ์คํ ๋ฐ 40๋ถ์ด๋ค!
์ฒ์์ 10๋ถ๋ ์ฌ๋ผ๊ฐ๊ธฐ ํ๋ค์๋๋ฐ, ์ด๋ ์๊ฐ 40๋ถ์ด๋ ์ฌ๋ผ๊ฐ๋ ๊ฑธ ๋ณด๋ฉด์ ์ ๊ธฐํ๊ณ ์ฌ๋ฐ์๋ค.
์ง์ง ๊พธ์คํ์ ํ์ด ์ค์ํจ์ ๋๋๊ฒ!
์ฝ์ฟผ์ธ๋ค๊ณผ ์ ํ์์น ํ๋๊ธฐ๋ก์ ๊ณต์ ํ๊ณ ์๋๋ฐ
๊ฐ์ ์ด๋๋ง ์ฑ์์ง๋๊ฒ ์๋์ค๋ฉด ์์์ ๋ฉํธ ๋ณด๋ด์ฃผ๊ธฐ๋ฅผ ์๋ฌต์ ์ผ๋ก ํ๊ณ ์๋ค.
์ด๊ฑด ์ผ์ฃผ์ผ 7๋ฒ ์ด๋ ๋ฌ์ฑ ๊ธฐ๋ !!!!!
๐ฅ ์ฌ์ฌํ์ด ๋ ์ฝฉ ๋ ์
๊พธ์คํ ํ๊ณ ์ถ์ง๋ง ์ฝ์ง ์์
๋ ์๋ ๊ทธ๋ฅ ๋ชฉํ๋ฅผ ๋๊ณ ํ์ง ์๋์ค ,, ์์ ๋ฌด์กฐ๊ฑด ์ด ์ฑ ์ ์ด๊ธฐ๊ฐ์์ ๋ค ์ฝ์๊ฑฐ์ผ! ํ๋๊น ๋ ์ฝ๊ธฐ ์ซ์ด์ง๋ ๊ฒ ๊ฐ๊ณ ํด์
์นจ๋ ์์ ๋๊ณ ๊ฑ ์ฌ์ฌํ ๋ 5ํ์ด์ง ์ ๋์ฉ ์ฝ๋๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค.
๋ ๋ํ๋ ๊ฐ์ ์ฐ ๋ฌด์ง๊ฐ์์ฐํ์ด ์๋๋ฐ,
๋ด๊ฐ ์ข์๋ค ๋๋ผ๋ ๊ตฌ์ ์ ๋ฐ์ค์น ๋ ์ฐ๋ฉด ๊ทธ ์ง๊ฐ๊ณผ ์์ด ์ค๋ฌํด์ ๋๋ฆ์ ์์ํ ํ๋ณต์ด ์๋ค.
๐ค ๊ทธ๋์ ๋์ ์๋ฐ๊ธฐ๋ฅผ ์์ฝํ์๋ฉด..
- ์ ๊ท ํ๋ก์ ํธ๋ฅผ ์ฑ
์์ง๋ฉด์ ํ๋ค์์ง๋ง ์ง๋๊ณ ๋๋ ์ถ์ต์ด์๋ค..!
- ์ผ์ ๊ด๋ฆฌ์ ๊ฐ๋ฐ๊ฐ๋ฅ์ฑ์ ๋ํด ์ด์ผ๊ธฐ ํ๋๋ฒ.
- ์ผ์ ์ฐ์ถ์ ์๊ฐ์ ๋๊ณ ๋ํ ์ผํ๊ฒ ๋งํ๊ธฐ. ์ผ์ ์ ๋ํ ์ด์ ๊ฐ ์๋ค๋ฉด ๊ธฐ๊ฐ์ ์ถฉ๋ถํ ํ์๋ ์ ์๋ค.
- ์งํํ๋ ํ๋ก์ ํธ์ ๋ํ ๋ฌธ์ํ๋ ๊ทธ๋๊ทธ๋ ํ๊ธฐ! -> ๋์ค์ ํ๋ฒ์ ์ ๋ฆฌํด์ผ์ง! === ์ํ๋ค!
- ํ์
ํ๋ ๊ณผ์ ์ ์น์ดํ๊ฒ ๋ฐฐ์ด ๊ฒ ๊ฐ๋ค.
- ์๋๋ฐฉ์ ์ ์ฅ๊ณผ ์ํฉ์ ๊ณ ๋ คํ์ฌ ๋งํ๊ธฐ
- ๋ด๊ฐ ์๋๊ฑด ์๋๊ฐ ๋ชจ๋ฅด๊ณ ์๋๊ฐ ์๋๊ฑด ๋ด๊ฐ ๋ชจ๋ฅผ ์ ์๋ค๋ฅผ ๋ช ์ฌํ๊ธฐ
- ๋ฒ์์์ด ์ค์ง ์๊ฒ ๋๋ง์ ๋ฐฉ๋ฒ์ ๋ง๋ค์ด ๊ฐ๋ ์ค
- ์ ์ ์ด ํ๋ค๋ ๋ชธ์ ํ๋ค๊ฒ ํ๊ธฐ(?)
- ๊ทธ๋ฆฌ๊ณ ์ด๋์ ์ฌ๋ฐ์ด!
'๐ ํ๋ฏธ๋ ธํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
VS Code์์ ChatGPT ์ฌ์ฉํ๊ธฐ (CodeGPT) (0) | 2023.03.10 |
---|---|
input ๊ด๋ จ ์ด๋ฒคํธ ํํค์น๊ธฐ - input onChange onKeyUp onKeydown (2) | 2022.06.01 |
ํ๋ก ํธ์๋ ์ ์ฌ 6๊ฐ์ ํ๊ณ ! (2) | 2022.04.12 |
ํฐ์คํ ๋ฆฌ ๋คํฌ๋ชจ๋ ์ ์ฉํ๊ธฐ - by ๋คํฌ๋ชจ๋ ๋ฒํผ (15) | 2022.02.03 |
ํ๋ก ํธ ์คํํฐ 2021ํ๊ณ - ์ด์จ๋ frontEND! (2) | 2022.01.10 |
๋๊ธ