-
Notifications
You must be signed in to change notification settings - Fork 2
π νλ‘μ νΈ ν΄λꡬ쑰 λ° μ€λͺ
μ μμ edited this page Aug 31, 2023
·
1 revision
π· focal
ββ .github
β ββ PULL_REQUEST_TEMPLATE.md ββββββ βοΈΒ PR ν
νλ¦Ώ
ββ .gitignore
ββ .prettierrc ββββββββββββββββββββ βοΈ prettier μ€μ νμΌ
ββ .eslintrc ββββββββββββββββββββ βοΈ eslint μ€μ νμΌ
ββ πΒ public
β ββ favicon.ico
β ββ index.html
ββ π src
ββ π api βββββββββββββββββββββ Axios μΈμ€ν΄μ€ λ° API κ΄λ ¨ λͺ¨λ ν¨μ
ββ π assets βββββββββββββββββββββ μμ΄μ½, μ΄λ―Έμ§ λ± μ μ 리μμ€
ββ π states βββββββββββββββββββββββ 리μ½μΌ κ΄λ ¨ ν΄λ
ββ π components
β ββ π common βββββββββββββββββββ κ³΅ν΅ μ»΄ν¬λνΈ
β ββ π Chat βββββββββββββββββββββ route pathκ° chatμΈ νμ΄μ§μμ μ¬μ©λλ μ»΄ν¬λνΈ
β ββ π Follow βββββββββββββββββββ route pathκ° followμΈ νμ΄μ§μμ μ¬μ©λλ μ»΄ν¬λνΈ
β ββ π Login ββββββββββββββββββββ route pathκ° loginμΈ νμ΄μ§μμ μ¬μ©λλ μ»΄ν¬λνΈ
β ββ π Post βββββββββββββββββββββ route pathκ° postμΈ νμ΄μ§μμ μ¬μ©λλ μ»΄ν¬λνΈ
β ββ π Product ββββββββββββββββββ route pathκ° productμΈ νμ΄μ§μμ μ¬μ©λλ μ»΄ν¬λνΈ
β ββ π Profile ββββββββββββββββ route pathκ° profileμΈ νμ΄μ§μμ μ¬μ©λλ μ»΄ν¬λνΈ
β ββ π Search βββββββββββββββββββ route pathκ° searchμΈ νμ΄μ§μμ μ¬μ©λλ μ»΄ν¬λνΈ
β ββ π Signup βββββββββββββββββββ route pathκ° signupμΈ νμ΄μ§μμ μ¬μ©λλ μ»΄ν¬λνΈ
ββ π layouts ββββββββββββββββββββ 곡ν΅μΌλ‘ μ¬μ©λλ λ μ΄μμ
ββ π pages βββββββββββββββββββββ λΌμ°ν
μ΄ μ μ©λ νμ΄μ§λ€μ λͺ¨μλμ ν΄λ
ββ π routes βββββββββββββββββββββ λΌμ°νΈμ κ΄λ ¨λ νμΌλ€μ λͺ¨μλμ ν΄λ
β ββ PrivateRoute.js
β ββ PublicRoute.js
β ββ Router.js
ββ π states ββββββββββββββββββββ Recoil κ΄λ ¨ ν΄λ
ββ π hooks βββββββββββββββββββββββ 컀μ€ν
ν
ν΄λ
β ββ useDebounce.js
β ββ useHandleResizeHeight.js
β ββ useModal.js
β ββ useScrollBottom.js
ββ π constants βββββββββββββββββ μμ
ββ π utils ββββββββββββββββββββ 곡ν΅μΌλ‘ μ¬μ©λλ μ νΈ ν¨μ
β ββ converTime.js
β ββ getDate.js
β ββ getProperImagSrc.js
β ββ handleImageError.js
ββ App.js
ββ index.js
ββ GlobaledStyled.js
- μ ν¬λ μ μμνκ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬λ‘ Reduxμ Recoil μ€ μ ννκ³ μ νμμ΅λλ€.
- λ¨Όμ Reduxλ μν, μ‘μ , 리λμλ‘ κ΅¬μ±λλ©° μ격ν ν¨ν΄μ λ°λ₯΄λ μνκ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬μ λλ€. λκ·λͺ¨ μ ν리μΌμ΄μ μ 볡μ‘ν μν κ΄λ¦¬μ μ ν©νλ©°, λ§μ μν λ³νκ° νμν λ μ μ©ν©λλ€.
- νμ§λ§ μ ν¬ νλ‘μ νΈλ λΉκ΅μ μκ·λͺ¨ νλ‘μ νΈμ¬μ 볡μ‘ν μνκ΄λ¦¬κ° νμνμ§ μμμΌλ―λ‘ Reduxλ λ°°μ μμΌ°μ΅λλ€.
- λ°λ©΄ Recoilμ μλμ μΌλ‘ κ°λ¨νκ³ , React λ¬Έλ² μΉνμ μΈ λΌμ΄λΈλ¬λ¦¬μ λλ€. μ μμνλ₯Ό μμ½κ² κ΄λ¦¬νμλκ² μ£Όλ λͺ©νμκΈ°λλ¬Έμ μ¬λ¬κΈ°λ₯μ νμλ‘ νμ§ μμκ³ , κ·Έ λλ¬Έμ λΉκ΅μ κ°λ¨ν Recoilμ μ ννκ² λμμ΅λλ€.
const token = localStorage.getItem('token')
await axios({
url: `${process.env.REACT_APP_BASE_URL}post/${post_id}`,
method: 'PUT',
data: {
post: {
content,
image: image.join(),
},
},
headers: {
Authorization: `Bearer ${token}`,
},
});
- api μμ²μ ν λλ§λ€ ν΄λΉμ½λλ₯Ό μΌμΌμ΄ λ€ μ¨μΌν΄μ μ½λκ° λ°λ³΅λκ³ , κΈΈμ΄μ§λ€λ λ¨μ μ΄ μμμ΅λλ€.
-
./api/instance/authInstance.js
import axios from 'axios'; const authAPI = (url, options) => { return axios.create({ baseURL: url, ...options }); }; const authInstance = authAPI(process.env.REACT_APP_BASE_URL); authInstance.interceptors.request.use( (config) => { const token = localStorage.getItem('token'); config.headers['Content-Type'] = 'application/json'; config.headers['Access-Control-Allow-origin'] = '*'; config.headers['Authorization'] = `Bearer ${token}`; return config; }, (error) => { console.log(error); return Promise.reject(error); }, ); export default authInstance;
- Axios interceptorλ μ ν리μΌμ΄μ μμ μ²λ¦¬νκΈ° μ μ AxiosλΌμ΄λΈλ¬λ¦¬μμ μνν HTTP μμ² λλ μλ΅μ κ°λ‘μ±κ³ μμ νλ λ° μ¬μ©ν μ μλ κΈ°λ₯μ λλ€. μμ²μ μΈμ¦ ν€λ μΆκ°, μ€λ₯ μ²λ¦¬ λλ μμ² λ° μλ΅ λ‘κΉ κ³Ό κ°μ λ€μν μ©λλ‘ μ¬μ©ν μ μμ΅λλ€.
-
μ€μ μ¬μ©μ
await authInstance.put(`/post/${post_id}`, { post: { content, image: image.join(), }, });
- baseUrl, headers, timeout λ±μ μ¬λ¬ κ³³μμ λ°λ³΅ν΄μ μμ±ν νμκ° μμ΄ μ½λ ν¨μ¨μ λμΌ μ μκ² λμμ΅λλ€.