[๐Ÿ’ป ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE 44๊ธฐ]main-project - 12์ผ์ฐจ

JiEunยท2023๋…„ 7์›” 13์ผ
0
post-thumbnail

๐Ÿ˜‚ ํƒ€์ž…์—๋Ÿฌ ๋ฉˆ์ถฐ!

1. undefined์ผ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์˜ค๋ฅ˜

๊ฐ’์ด ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค

์ผ์ • ์ƒ์„ธ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋Š” ๊ณผ์ •์—
ํƒ€์ž… ์—๋Ÿฌ๋กœ ๊ฑฐ์˜ 3์‹œ๊ฐ„์€ ๋ณด๋ƒˆ๋‹ค.

ํƒ€์ž… ๊ฐ€๋“œ๋„ ์‹œ๋„ํ•ด ๋ดค๊ณ 
ํƒ€์ž… ์ง€์ •๋„ ํ–ˆ๋Š”๋ฐ ๊ณ„์† ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•˜์—ˆ๋‹ค..

undefined์ผ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์˜ค๋ฅ˜๋Š”
๊ฐ’์ด ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

 <article>
  {courseData && destinationList && (
    <ScheduleMapDetail
      destinationList={destinationList}
      title={courseData.courseTitle || ''}
      text={courseData.courseContent || ''}
      courseDday={courseData.courseDday || ''}
      />
  )}
</article>

courseData.courseTitle || '' ์™€ ์˜ต์…”๋„์ฒด์ด๋‹์„ ํ•ด์ค˜ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

2. ํƒ€์ž… ์„ ์–ธ์€ ํ–ˆ์œผ๋‚˜ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ํ™•์ธ

์ œ์ผ ํฐ ๋ฌธ์ œ๋Š”
ํƒ€์ž…์„ ์„ ์–ธ์— ์ง€์ •ํ•ด ์คฌ๋Š”๋ฐ ์ž๊พธ ๋‹ค๋ฅธ ํƒ€์ž…๊ณผ ๋น„๊ต๋ฅผ ํ–ˆ๋‹ค.
์•Œ๊ณ  ๋ณด๋‹ˆ ํ•ด๋‹น ๊ฐ’์€ ๋ชจ๋‘ ๋™์ผํ•œ ํƒ€์ž…์œผ๋กœ ์ง€์ •ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

export type PostReadT = {
  courseData: {
    courseDday: string;
    courseTitle: string;
    courseContent: string;
    coureThumbnail: string;
    courseThumbnail: string;
  };
  destinationList: IScheduleListItem[];
};

๋งŒ์•ฝ PostReadT์œผ๋กœ ํƒ€์ž…์„ ์ง€์ •ํ•ด ์ฃผ์—ˆ๋‹ค๋ฉด
props๊ฐ’ ๋“ฑ ๋ชจ๋“  ๊ฑธ PostReadT์œผ๋กœ ์ง€์ •ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

3. PostReadT์œผ๋กœ๋งŒ ํƒ€์ž… ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค๋ฉด courseDat๋งŒ ํƒ€์ž…์„ ์–ด๋–ป๊ฒŒ ์ฃผ์ง€?

๊ฐ์ฒด ํ˜•์‹์œผ๋กœ ์ดˆ๋ฐ˜์—๋Š” PostReadT.courseData ์œผ๋กœ ์คฌ๋”๋‹ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

๋‹ค๋ฅธ ๋ฐฉ์‹์ธ PostReadT['courseData']์œผ๋กœ ํƒ€์ž…์„ ์ง€์ •ํ•˜๋‹ˆ ๊น”๋”ํ•˜๊ฒŒ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.ใ…Ž

const scheduleDetailSlice = createSlice({
  name: 'scheduleDetail',
  initialState,
  reducers: {
    getCourseData(state, action: PayloadAction<PostReadT['courseData']>) {
      state.courseData = action.payload;
    },
    getDestinationList(state, action: PayloadAction<IScheduleListItem[]>) {
      state.destinationList = action.payload;
    },
  },
});

๐Ÿ˜‚ ๋„๋Œ€์ฒด ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ํ—ค๋”๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ•˜์ง€...

ํ—ค๋”๊ฐ€ ์žˆ๋Š” ๊ณณ, ์—†๋Š” ๊ณณ์ด ์žˆ๋‹ค.
์ดˆ๋ฐ˜์—๋Š” location.pathname ๋ฅผ ์ด์šฉํ•ด ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ–ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด /register๊ฒฝ๋กœ๋กœ ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ ํ—ค๋”๋ฅผ display: none์œผ๋กœ ํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํŽ˜์ด์ง€๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด์„œ /register/detil/11 ์ด๋Ÿฐ์‹์œผ๋กœ ๋“ค์–ด์˜ค๋ฉด ํ•ด๊ฒฐ์„ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค...ใ… 

useParams๋ฅผ ์‚ฌ์šฉํ•ด ๋ดค์ง€๋งŒ useParams๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด
Routes ๋‚ด๋ถ€์— ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š”๊ฑฐ ๊ฐ™๋‹ค...

๋ฌธ์ž์—ด์€ ์œ ์‚ฌ ๋ฐฐ์—ด

location.pathname.split('/')[1];
/register/detil/11 ์ธ ๊ฒฝ์šฐ register ๊ฐ’๋งŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

display: ${(props) => (props?.isPath === 'register' ? 'none' : 'flex')};

๋•๋ถ„์— ๋”ฐ๋กœ ๋กœ์ง ์ž‘์„ฑ ์—†์ด ํŽธํ•˜๊ฒŒ ์ˆ˜์ • ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
๊ณ ๋ง™๋‹ค bard..!

๊ทธ๋ ‡๊ฒŒ ์™„์„ฑ!ใ…Žใ…Ž.. ํž˜๋“ค๋‹ค..ํœด

์žŠ์ง€ ๋ง์ž.. ๋ฌธ์ž์—ด์€ ์œ ์‚ฌ ๋ฐฐ์—ด...๐Ÿฅน


โœ๏ธ ๋งˆ์น˜๋ฉฐ

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ์ง„ํ–‰ํ•˜๋‹ˆ ํƒ€์ž… ์˜ค๋ฅ˜๋กœ ์ธํ•ด
์ž‘์—…ํ•˜๋Š” ์‹œ๊ฐ„ ๋ณด๋‹ค ์˜ค๋ฅ˜ ํ•ด๊ฒฐํ•˜๋Š” ์‹œ๊ฐ„์ด ๋” ๋งŽ์•˜๋‹ค.

์ด๋ฒˆ ๊ธฐํšŒ๋ฅผ ํ†ตํ•ด ํƒ€์ž…์„ ์ง€์ •ํ•  ๋•Œ ์„ ์–ธํ•œ ํ•˜๋‚˜์˜ ํƒ€์ž…์œผ๋กœ props๊นŒ์ง€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ๊ณผ ๋งŒ์•ฝ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ํ—ค๋” ์œ ๋ฌด๋ฅผ ํŒ๋‹จํ•  ๋•Œ
location.pathname๊ณผ location.pathname.split('/')[1]๋ฅผ
์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š” ์ ์„ ์•Œ๊ฒŒ๋œ ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๋‹ค.

profile
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ชฉํ‘œ๋กœ ์„ฑ์žฅ ์ค‘! (์•Œ์•„๋ดค๋˜ ๋‚ด์šฉ ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ธฐ)

2๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2023๋…„ 7์›” 24์ผ

์•ˆ๋…•ํ•˜์„ธ์š”. ์ฝ”๋“œ ์Šคํ…Œ์ด์ธ  ๊ด€๋ จ ๊ถ๊ธˆํ•œ ์ ์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ์–ด์„œ ๋„ค์ด๋ฒ„ ๋ฉ”์ผ๋กœ ๋ฌธ์˜ ์—ฐ๋ฝ ๋“œ๋ ธ์Šต๋‹ˆ๋‹ค 'ใ…ก'
ํ”„๋กœ์ ํŠธ ๋ง‰๋ฐ”์ง€์ด์‹ค ํ…๋ฐ ํž˜๋‚ด์‹œ๊ณ  ๋งˆ์ง€๋ง‰๊นŒ์ง€ ํ™”์ดํŒ… ํ•˜์‹œ๊ธธ ๋ฐ”๋ผ๊ฒ ์Šต๋‹ˆ๋‹ค!!

1๊ฐœ์˜ ๋‹ต๊ธ€