Posts
Q&A
jotai๋ก ๋ณ๊ฒฝํ์ ๋ ์ฝ๋
์ํ ๋ค๋ค ์ดํ ๊ฐ์๋ค์ด๋ณด์๋ฉด ๋ฐ์์ค๋ ์ฃผ์๋ฅผ ๋ฐ๋ก ๋นผ๊ฒ๋๊ฑฐ๋ ์ ์ ๋ ์ต์ข ์ฝ๋๋ผ ์ข ๋ค๋ฅด๊ธดํ๋ฐ ์ฐ์ ๊ณต์ ๋๋ฆด๊ฒ์ !surveyState.jsimport { atom } from 'jotai'; import getSurvey from '../../../survices/getSurvey'; const surveyState = atom(async (get) => { const res = await getSurvey(window.location.pathname.split('/')[2]); return res.data; }); export default surveyState;getSurvey.jsimport mainApi from './apis/mainApi'; function getSurvey(surveyId) { return mainApi.get(`/surveys/${surveyId}`); } export default getSurvey;mainApi.jsimport axios from 'axios'; const mainApi = axios.create({ baseURL: 'http://localhost:3001', }); export default mainApi; ์ถ๊ฐ์ ์ผ๋ก ์ ๊ฐ ํค๋งธ๋๋ถ๋ถ์ questionLengthState.js์ธ๋ฐ ์ด๊ฑด atomWithQuery ์ ์ค์นํ์ ์ผ๋ผ์ ! ๊ฐ์ ๋ด์ฉ์ ์ ๊ฐ ์์ฑํ ์ฝ๋์ฒ๋ผ api๋ฅผ ์ง์ ํธ์ถํ์ง์๊ณ importํด์ ์ฌ์ฉํ๋๋ฐ ์ด์ํ๊ฒ ๊ทธ๋ ๊ฒ ํ๋ฉด ์ค๋ฅ๊ฐ ๋์ ์ ๋ ์ง์ ํธ์ถํ์ด์ ! import { atomWithQuery } from 'jotai-tanstack-query'; import getSurvey from '../../../survices/getSurvey'; const questionLengthState = atomWithQuery(() => ({ queryKey: ['surveyData'], queryFn: async () => { try { const res = await getSurvey(window.location.pathname.split('/')[2]); // API ์ง์ ํธ์ถ return res.data?.questions?.length ?? 0; // ๋ฐฉ์ด ์ฝ๋ ์ถ๊ฐ (questions๊ฐ ์์ ๊ฒฝ์ฐ 0 ๋ฐํ) } catch (error) { console.error('โ ์ค๋ฌธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ค ์ค๋ฅ ๋ฐ์:', error); return 0; // ์ค๋ฅ ๋ฐ์ ์ ๊ธฐ๋ณธ๊ฐ 0 ๋ฐํ } }, suspense: true, // Suspense ํ์ฑํํ์ฌ ๋ก๋ฉ ์ํ ์๋ ์ฒ๋ฆฌ })); export default questionLengthState;ํด๋ณด์๊ณ ๋ชจ๋ฅด์๊ฒ ๋๊ฑฐ ์๋ ค์ฃผ์๋ฉด ๋ ๊ณต์ ๋๋ฆด๊ฒ์ ~!
- Likes
- 0
- Comments
- 3
- Viewcount
- 444
Q&A
jotai๋ก ๋ณ๊ฒฝํ์ ๋ ์ฝ๋
์ด๋ค ๋ถ๋ถ์์ ๋งํ์ จ์๊น์ ? ์๋ ค์ฃผ์๋ฉด ์ฝ๋ ๊ณต์ ํด๋๋ฆด๊ฒ์
- Likes
- 0
- Comments
- 3
- Viewcount
- 444




