console.log(combinedData); ์ฐ์ผ๋ ์ด์ date๋ณ๋ก data๊ฐ ๋์ค๊ฒ ๋์๋ค. ํ์ง๋ง ๊ฐ์ ์์ฑ์ด ๋ค๋ฅธ ๊ณ์ข ๋ฐ์ดํฐ์ ํ๊ธ ๋ฐ์ดํฐ... ๋ฆฌํด๋ฌธ์ผ๋ก ๋ ๋๋งํ ๋ ์กฐ๊ธ ์ ๊ฒฝ์ ์จ์ค์ผ ํ๋ค export default function MonthConsumptionDetail({ combinedData, }: { combinedData: CombinedData[]; }) { const detailBoxRef = useRef(null); useEffect(() => { if (detailBoxRef.current) { const itemCount = combinedData?.reduce( (height, group) => height + group.data.length, 0 ) || 0; con..
์ ์ฒด ๊ธ
๐ฉ๐ป java, mysql, android, php, javascript๋ฅผ ๋ค๋ฃน๋๋คexport default function MonthConsumptionContainer({ years, month, setYears, setMonth, monthSumData, groupedData, cashGroupedData, }: { years: number; month: number; setYears: Dispatch; setMonth: Dispatch; monthSumData: MonthSumData | Record; groupedData: GroupedData[]; cashGroupedData: CashGroupedData[]; }) { //6์ ๋ฐ์ดํฐ์ 7์ ๋ฐ์ดํฐ๋ฅผ ๋๋ ์, 6์ ๋ฐ์ค์ ๋์ด๋ง ์ปค์ง๊ฒ ํ์ง ์๊ฒ ํฉ๋๋ค const monthData = groupedData.filter( (..
๊ธฐ์กด useEffect(() => { const setBoxHeight = () => { if (detailBoxRef.current) { const itemHeight = 4.5; const itemCount = groupedData.reduce((count, group) => count + group.data.length, 0); const calculatedHeight = itemHeight * itemCount + 3 * itemCount; detailBoxRef.current.style.height = `${calculatedHeight}vh`; } }; setBoxHeight(); }, [groupedData, detailBoxRef]); ์์ ํ useEffect(() => { if (deta..
import { useCallback } from "react"; // ... Your imports and other code ... export default function DayPage() { // ... Your state declarations ... // Function to fetch data using useCallback const handleFetchData = useCallback(() => { dayRender(userId, month, date) .then((response) => { // ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ก์ง //console.log(response.data.data); setDayConsumptionData(response.data.data.paymentResponses); //..
์๋ฒ์์ ๋ฐ์ดํฐ๋ ๋ค์ด์๋๋ฐ, ๋ ๋๋ง์ด ์๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค useEffect(() => { const handleFetchData = () => { dayRender(userId, month, date) .then((response) => { // ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ก์ง console.log(response.data); console.log(response.data.data) setDayConsumptionData(response.data.data.paymentResponses); setDaySumData(response.data.data.daySummary); }) .catch((error) => { // ์๋ฌ ์ฒ๋ฆฌ ๋ก์ง console.log(error); }); }; handleFetchData(); },..
์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ๋ค ๋ณด๋ฉด, ๊ฐ์ฅ ๋จผ์ ๋ง์ฃผํ๋ ์๋ฌ๋ cors ์๋ฌ์ด๋ค. CORS๋ ๋ณด์ ์์ ์ด์ ๋ก ์ธํด ๋ธ๋ผ์ฐ์ ์์ ์คํ ์ค์ธ ์น ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ค๋ฅธ ์ถ์ฒ(๋๋ฉ์ธ, ํ๋กํ ์ฝ, ํฌํธ)์ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๊ฒ์ ์ ํํ๋ ์ ์ฑ
์ด๋ค. ๋ฐ๋ผ์, ์์ฒญ์ ๋ณด๋ด๋ ํด๋ผ์ด์ธํธ์์ CORS ์๋ฌ๋ฅผ ํผํ๋ ค๋ฉด ์ฌ๋ฐ๋ฅธ CORS ํค๋๋ฅผ ํฌํจํ๋ ์์ฒญ์ ๋ณด๋ด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ์์ฒญ ํค๋์ ํ์ํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ์ฌ CORS ์ ์ฑ
์ ์ค์ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Access-Control-Allow-Origin ํค๋๋ฅผ ์ค์ ํ์ฌ ํ์ฉ๋ ์ถ์ฒ๋ฅผ ๋ช
์ํ ์ ์์ต๋๋ค. ํ์ง๋ง, Access-Control-Allow-Origin ํค๋๋ฅผ ์ค์ ํ์์์๋ ๋ถ๊ตฌํ๊ณ ์๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์์ ์ฝ๋์์๋ "ngrok-skip-browser-..
์ด๊ธฐ์ธํ
์ ํ๊ธฐ ์ํด์, setting ๋ธ๋์น๋ฅผ dev(ํ์๋ค์ด๋ ๊ฐ์ด ์ฐ๋ ๋ธ๋์น)๋ก merge ํ๋ pr์ ๋ ๋ฆฌ๋ ค๊ณ ํ๋๋ฐ, ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค. There isn't anything to compare. dev and setting are entirely different commit histories. ๋น๊ตํ ๊ฒ์ด ์๋ค. dev์ setting ์ ์์ ํ ๋ค๋ฅธ ์ปค๋ฐ๋ด์ญ์ ๊ฐ์ง๊ณ ์๋ค ์์ธ์ ์ฐพ์ง ๋ชปํ๋ค๊ฐ, ๊ฐ ๋ธ๋์น๊ฐ ์๋ก ๋ค๋ฅธ ํด๋๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ ๋น๊ต์์ฒด๋ฅผ ๋ชปํ๋ ๊ฒ ๊ฐ๋ค๋ ํ์์ ๋ง์ ๊ฐ ๋ธ๋์น์ ํด๋๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด์๋ค ์์ ์์ํด๋ ๊ตฌ์กฐ ๋ถํฐ ๋ฌ๋ผ์ pr์ด ๋ถ๊ฐ๋ฅํ๋ ๊ฒ์ด๋ค. ์๋ง ๊น ํด๋ก ์ ๋ฐ์๋ ์๊ฒฉ main ๋ธ๋์น(์๋ฌด๊ฒ๋ ์๋)์์ ๊ฐ์ ธ์์ setting์ ํด๋๊ตฌ์กฐ๊ฐ dev์ ๋ค๋ฅด๊ฒ ๋..
git push origin ๋ณธ์ธ์ด๋ฆ/์์
๋ด์ฉ์ ์
๋ ฅํ๋ฉด? ์ง๊ธ ์์นํด์๋ ๋ก์ปฌ๋ธ๋์น์ ๋ด์ฉ์ ๋ณต์ฌํด์, ์๊ฒฉ์์ ‘๋ณธ์ธ์ด๋ฆ/์์
๋ด์ฉ’ ๋ผ๋ ์ด๋ฆ์ผ๋ก ์๋ก์ด ๋ธ๋์น๊ฐ ์๊ธด๋ค ์ฆ, ๋ก์ปฌ์์ ๋ง๋ ๋ธ๋์น๋ฅผ ์๊ฒฉ ๋ธ๋์น๋ก ์ฎ๊ธฐ๋ ๊ฒ์ด๋ค! ์ฌ๋ฐ๋ฅธ ๊ฐ์ด๋๋ผ์ธ์ ์์
ํ ๋ด์ฉ์ ์๋ณ ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ๋ก์ปฌ ๋ธ๋์น๋ฅผ ๋ช
๋ช
ํ๊ณ , ํด๋น ๋ก์ปฌ ๋ธ๋์น๋ฅผ ์๊ฒฉ์ ์ฅ์๋ก ํธ์ํ๋ ๊ฒ์
๋๋ค. ๋ก์ปฌ์ ์ฅ์์ ํ์ฌ ๋ธ๋์น๋ฅผ ์๊ฒฉ์ ์ฅ์์ ํธ์ํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅผ ์ ์์ต๋๋ค: 1. ์๋ก์ด ๋ก์ปฌ ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ ํ์ฌ ๋ก์ปฌ ๋ธ๋์น์ ๋ด์ฉ์ ํด๋น ๋ก์ปฌ๋ธ๋์น๋ก ์ด๋์ํต๋๋ค. git branch ๋ณธ์ธ์ด๋ฆ/์์
๋ด์ฉ git checkout ๋ณธ์ธ์ด๋ฆ/์์
๋ด์ฉ ์ด ๋ช
๋ น์ด๋ ๋ณธ์ธ์ด๋ฆ/์์
๋ด์ฉ์ด๋ผ๋ ์ด๋ฆ์ ์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ , ํด๋น ๋ธ..