Couch Coding (8) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ Couch Coding ( ์นด์ฐ์น ์ฝ๋ฉ ) - CampUs ํ๋ก์ ํธ ํ๊ณ ์นด์ฐ์น์ฝ๋ฉ์์ ์งํํ๋ 6์ฃผ๊ฐ์ ํ๋ก์ ํธ๊ฐ ๋์ด ๋ฌ๋ค. 6์ฃผ๊ฐ ํ์ ๋ชจ๋๊ฐ ์ด์ ์ ์ผ๋ก ์ํด์ฃผ์ด์ ๋ง๋ฌด๋ฆฌ๊ฐ ์ ๋ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ๋ค ์๋ฒฝ๊น์ง ๋จ์ ๊ฐ๋ฐํ๋ฉฐ ํ์ผ๋ก ์ผ ํ๋ค๋ ๊ฒ์ด ์ ๋ง ๋ฉ์ง ์ผ์ด๋ผ๋ ๊ฒ์ ๋๋ผ๊ฒ ๋ ๊ฒ ๊ฐ๋ค. ์ง๊ธ๊น์ง ์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๋๋ผ๊ณ ๋ฐฐ์ ๋ ๊ฒ๋ค์ ๊ธฐ๋กํ์๊ณ , ์ด์ ๋ ํ๊ณ ๋ฅผ ์จ๋ณด์ ํ๋ค. CampUs ํ๋ก์ ํธ์ ์ฐธ์ฌํ๊ฒ ๋ ๊ณ๊ธฐ ์ฌ๋ฌ ์ฌ๋๋ค์ด ๋ค์ํ ์์ด๋์ด๋ฅผ ๋์๋๋ฐ, ์์งํ ๋ง ๋๋ฆฐ๋ค๊ฑฐ๋ ํ๋ ์์ด๋์ด๋ ์์๋ค. ๊ทธ ๋น์๋ง ํด๋ ๋ด ์์ ๊ฐ์ด ๋ฐ๋ฅ์ ๊ธฐ์ด ๋ค๋ ๋์ฌ์ ์ด๋ ๊ฐ๋ 1์ธ๋ถ๋ง ํ๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ ๊ฒ ๊ฐ๋ค ์ด๋ ํ, ์ด๋ค ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ํ์ ๋ถ๋ง ์ ๋ง๋๋ฉด ์ข๊ฒ ๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋ ๊ฒ ์บ ํ์ฅ์ ์ถ์ฒ ์๋น์ค ํ์ ์ฐธ์ฌํ๊ฒ ๋์๊ณ ํ์๋ถ๋ค๊ณผ ์งง์ ๋ํ๋ฅผ ๋.. Couch Coding ( ์นด์ฐ์น ์ฝ๋ฉ ) - ReactKakaoMapSDK ์ด์ฉํ์ฌ ๋ง์ปค, ์ปค์คํ ์ค๋ฒ๋ ์ด ์์ฑํ๊ธฐ (์นด์นด์ค๋งต) ์ฐ๋ฆฌ ํ์ด ํ์ฌ ๊ฐ๋ฐํ๊ณ ์๋ CampUs ์๋น์ค๋ ์ง๋๋ฅผ ํตํด ์บ ํ์ฅ์ ์ขํ๋ฅผ ํ์ธํ๊ณ ์บ ํ์ฅ์ ์กฐํํ ์ ์๋ ์๋น์ค์ด๋ค ์ ์ฌ์ง์ฒ๋ผ ์บ ํ์ฅ์ ๊ฒ์ํ๋ฉด ๊ทธ ๊ฒฐ๊ณผ์ ๋ฐ๋ฅธ ์ขํ๊ฐ ์ง๋์ ๋ฑ๋ก๋๊ณ ๋ง์ปค๋ฅผ ํด๋ฆญํ์ ๋ ์ฌ์ง๊ณผ ๊ฐ์ '์ปค์คํ ์ค๋ฒ๋ ์ด'๋ผ๊ณ ๋ถ๋ฅด๋ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋ง ํ๋ค. ์ด์ ์ kakaoMap API๋ฅผ ํตํด ๋ฆฌ์กํธ์์ ๊ฐ๋ฐ์ ํ์ ๋ ๋ฆฌ์กํธ์์ ์ฌ์ฉํ๊ธฐ๊ฐ ์กฐ๊ธ ๋ถํธํ๋ค๊ณ ๋๋์ ์ด ์์ด์ ํธ๋ฆฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์๊น ์ฐพ์๋ณด๋ค๊ฐ https://github.com/JaeSeoKim/react-kakao-maps-sdk GitHub - JaeSeoKim/react-kakao-maps-sdk: React components for using kakao map api React components for .. Couch Coding ( ์นด์ฐ์น ์ฝ๋ฉ ) - AntDesign ์ด์ฉํ์ฌ ํ์ด์ง๋ค์ด์ ๊ตฌํํ๊ธฐ Ant Design์ ์๋ฆฌ๋ฐ๋ฐ ๊ทธ๋ฃน์์ ๊ฐ๋ฐํ UI ํ๋ ์์ํฌ์ด๋ค . Button, Slide, Input, Form ๋ฑ ๋ค์ํ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํ๋ค Ant Design์ ์ด์ฉํ์ฌ ์์ฝ๊ฒ ์ฌ๋ผ์ด๋์ ํ์ด์ง๋ค์ด์ ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ ! ๐ Pagination ํ์ด์ง๋ค์ด์ ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ ์ ํ์ด์ง๋ค์ด์ Example์ ์ฌ์ฉํด๋ณด์! // Pagination import { Pagination } from 'antd'; const [currentPage, setCurrentPage] = useState(); // ํ์ฌ ํ์ด์ง State // Ant Design์ Pagination ์ปดํฌ๋ํธ { changePage(value); // ํ์ด์ง์ ๋ณ๊ฒฝ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด changePage ํจ.. Couch Coding ( ์นด์ฐ์น ์ฝ๋ฉ ) - Geolocation API ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ํ์ฌ์์น ๊ฐ์ ธ์ค๊ธฐ ์ด ํฌ์คํธ์์๋ geolocation API๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ํ์ฌ ์์น๋ฅผ ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฅ์ ๊ตฌํ ํด ๋ณผ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ ํ์ด ์นด์ฐ์น์ฝ๋ฉ์์ ๊ฐ๋ฐํ๊ณ ์๋ CampUs ์๋น์ค๋ ๋ฉ์ธํ์ด์ง์์ ์ฌ์ฉ์์ ์์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์ ์ฃผ๋ณ ์บ ํ์ฅ์ ์ถ์ฒํด์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์๋ค. ์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ธฐ ์ํด์๋ ๋ฉ์ธํ์ด์ง์ ๋ค์ด๊ฐ์๋ง์ ์ฌ์ฉ์์ ํ์ฌ์์น๋ฅผ ์์๋ด๋ ๊ฒ์ด ์ค์ํ๋ค ! ํ์ฌ์์น๋ฅผ ๋ฐ๊ธฐ ์ํด์๋ navigator ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. navigator.geolocation.getCurrentPosition(์์น๋ฅผ ๋ฐ์ ๋ค์ ์คํํ ํจ์, ์๋ฌ๊ฐ ๋ฐ์ ํ์ ๋ ์คํํ ํจ์); navigator ๊ฐ์ฒด๋ ๋ธ๋ผ์ฐ์ ๊ณต๊ธ์ ๋ฐ ๋ฒ์ ์ ๋ณด ๋ฑ์ ํฌํจํ ๋ธ๋ผ์ฐ์ ์ ๋ํ ๋ค์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด์ด๋ค . getCurre.. Couch Coding ( ์นด์ฐ์น ์ฝ๋ฉ ) - ๊ธ๋ก๋ฒ axios ๊ธฐ๋ณธ(defaults) ์ค์ ์ด๋ฒ ๊ธ์ axios๋ฅผ ๋ชจ๋ํํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์ axios์ default๋ฅผ ์ค์ ํด์ฃผ๊ธฐ ์ํด axiosInstance๋ผ๋ ํ์ผ๋ด์์ ๊ด๋ฆฌํ๋๋ก ํ์ ์ฐ๋ฆฌ ํ์ ์ ์ฒ๋ผ commonํด๋์์ ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ๋ก ํ๋ค. ์ด์ ์ฝ๋๋ฅผ ํตํด ์ดํด๋ณด์ // axiosInstance.js import axios from 'axios'; const axiosInstance = axios.create({ baseURL: 'https://api.example.com' }); axiosInstance.defaults.headers.common['Authorization'] = 'FIREBASE AUTH TOKEN'; export default axiosInstance; ์ ์ฝ๋๋ ๋ฉํ ๋์ด ์ฒ์ ์ฃผ์ ์์ ์ฝ๋์ด๋ค. ax.. Couch Coding ( ์นด์ฐ์น ์ฝ๋ฉ ) - Frontend์์ CORS ํด๊ฒฐํ๊ธฐ .. ๋ฌธ์ ์ ์์ โ ๏ธ ๋ก๊ทธ์ธ, ํ์๊ฐ์ ์ ์ํด FIrebase๋ก Google oAuth๋ฅผ ์ฐ๊ฒฐํ๊ณ Firebase ๋ด์ ํ ํฐ์ ๊ฐ์ง๊ณ ๋ฐฑ์๋ ์๋ฒ์ ๋ก๊ทธ์ธ, ํ์๊ฐ์ ์์ฒญ์ ๋ณด๋ด์ผ ํ์๋ค. ์ ๋๋๋ผ .. ๐จ Access to fetch at ‘https://api.lubycon.com/me’ from origin ‘http://localhost:3000’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch th.. Couch Coding ( ์นด์ฐ์น ์ฝ๋ฉ ) - json-server ๋ฅผ ์ด์ฉํ Mock ๋ฐ์ดํฐ ์์ฑ ๊ธฐํ ๋จ๊ณ๊ฐ ์ง๋๊ฐ๊ณ ์ค์ ๋ก ํ ํ๋ก์ ํธ๊ฐ ์์์ด ๋์๋ค. ๋ฐฑ์๋์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์๋ ์ฐจ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฐฑ์๋ API ๊ฐ ์์ฑ ๋ ๋ ๊น์ง ํ๋ก ํธ์๋๋ ๋ฌด์์ ํด์ผํ ๊น ? ๋ฐ๋ก ๋ฐฑ์๋ํ์์ API ๊ฐ๋ฐ ์๋ฃ๋ ๋๊น์ง json - server๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์์ ๋ฐ์ดํฐ, api ๋ฅผ ์์ฑํ์ฌ ์ค์ API๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ปดํฌ๋ํธ ๊ฐ๋ฐ์ ์์ํ๋ค๊ฐ ์ถํ ์ค์ API๋ฅผ ์ฐ๋ํ๋ฉด ๋๊ฒ ๋ค. ์ค์น ๋ฐฉ๋ฒ npm install -g json-server ์ค์น๊ฐ ์๋ฃ ๋์๋ค๋ฉด ์์ ๊ฐ์ด ํ๋ก์ ํธ ํด๋ ๋ด๋ถ ์ต์์์ json-server๋ผ๋ ํด๋๋ฅผ ์์ฑํ๊ณ ๊ทธ ์์ db.json์ด๋ผ๋ ํ์ผ์ ๋ง๋ค์. ์ด์ ์ค์ ๊ฐ๋ฐ ๋ API ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ฌ db.json ํ์ผ์์ mock ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ฉด ๋๊ฒ ๋ค. ์๋๋ ์ค์ ๊ฐ๋ฐ.. Couch Coding ( ์นด์ฐ์น ์ฝ๋ฉ ) - ํ ํ๋ก์ ํธ ์ฐธ๊ฐ [๊ธฐํ] ์ง์ํ ์ด์ ๋ฉด์ ๊ดํ, ์ฝ๋ฉํ ์คํธ ๊ดํ ๋ฑ ์ฌ๋ฌ๊ฐ์ง ์ด์ ๋ก ์์ ๊ฐ์ด ๊ฒฐ์ฌ๋ ์ํ์๋ค. ์ฌ์ค ์ ์ฌ ์ง์์ ํ๋ฉด์ ๋ถ์ด๋ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ค ํ๋ถ ๋๋ ์๋ฒ ๋๋๋ฅผ ์ ๊ณตํ์ง๋ง ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๊ฐ ๋๊ฒ ๋ค๊ณ ๋ง์๋จน๊ณ ๊ณต๋ถ๋ฅผ ์์ํ ํฐ๋ผ ํ๋ก ํธ์๋์ ๋ํ ๊ธฐ๋ณธ๊ธฐ, ๊ทธ๋ฆฌ๊ณ ํ์ ์ ๋ํ ๊ฒฝํ์ด ์ ๋ง ๋ง์ด ๋ถ์กฑํ๋ค๊ณ ๋๋ผ๊ณ ์์๋ค. ์นด์ฐ์น ์ฝ๋ฉ์ ์ฐธ์ฌํ๋ฉด์ ๊ฐ์ ๊ธธ์ ๊ฑธ์ด๋๊ฐ๋ ๋๋ฃ๋ค๊ณผ ํ์ ์ ํ๋ ๊ฒฝํ๋ ์๊ณ ๋ด ์ฝ๋๊ฐ ์ณ์ ์ฝ๋์ธ์ง ๋ด์ฃผ์๋ ๋ฉํ ๋์ด ์์ผ๋ ์ด๊ฑด ๊ธฐํ๋ค ! ์๊ฐํ๊ณ ๊ณ ๋ฏผ์์ด ์ฐธ๊ฐํ๋ค. ์ง๊ธ๊น์ง ๊ฒฐ๊ณผ๋ ๋งค์ฐ๋ง์กฑ ๐ ์นด์ฐ์น์ฝ๋ฉ์ ๋ํด ์งง๊ฒ ์๊ฐํ๊ณ ์ฐ๋ฆฌํ์ด ์นด์ฐ์น ์ฝ๋ฉ์์ ๊ธฐํ์ ์ด๋ป๊ฒ ์งํํ๋์ง ์๊ฐํ๊ณ ์ ํ๋ค . ์นด์ฐ์น์ฝ๋ฉ ์๊ฐ ์นด์ฐ์น์ฝ๋ฉ ๋ด์์ ์์ ์ ์๊ฐํ๋ ๋ด์ฉ์ ์๋์ ๊ฐ๋ค. ์ ๋ฌธ ๋ฉํ ๊ฐ๋ฐ์.. ์ด์ 1 ๋ค์