๐Ÿ’ป TIL 23.04.18

๊น€์˜์šฐ(Yeongwoo Kim)ยท2023๋…„ 4์›” 24์ผ
0
post-thumbnail

โ— ๋ฌธ์ œ์ 

  • ์‚ญ์ œ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ํŒ์—…์ด ๋‚˜์˜จ๋‹ค.
  • ํŒ์—…์—์„œ ๋™์˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด api.post๋ฅผ ํ†ตํ•ด ์‚ญ์ œ๋ฅผ ์š”์ฒญํ•œ๋‹ค.
  • ์‚ญ์ œ ์š”์ฒญ์ด ๊ฐ€๋ฉด ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์˜ ์‚ญ์ œ ๋ฒ„ํŠผ์ด ์‚ฌ๋ผ์ง€๊ณ  ๋ฆฌ์ŠคํŠธ ์ƒํƒœ : ์‚ญ์ œ๊ฐ€ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค.

์œ„ 3๊ฐ€์ง€๊ฐ€ ๋‚ด๊ฐ€ ํ˜„์žฌ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์ธ๋ฐ, 1,2๋ฒˆ์€ ์ž˜ ์ž‘๋™์ด ๋œ๋‹ค. ํ•˜์ง€๋งŒ re-rendering์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ƒ๊ฐ

  1. ๋™์˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด api.post๋ฅผ ๋ณด๋‚ด๊ณ  location.reload()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ๊ณ ์นจํ•œ๋‹ค.
  2. api.get์„ ํ•œ๋ฒˆ ๋” ์‹คํ–‰ํ•œ๋‹ค.

์šฐ์„  ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ ๋ฐ›๊ธฐ ์œ„ํ•ด ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์นจํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž๋กœ ํ•˜์—ฌ๊ธˆ ๋งŽ์€ ๋ถˆํŽธํ•จ์„ ์•ผ๊ธฐํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ œ์™ธํ•˜๊ณ  2๋ฒˆ์งธ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ–ˆ๋‹ค.


// index.tsx

api.get(apply)
<ApplyProcess/>
applyStudys.map((applyStudy)=>{
	<ApplyStudy applyStudy={applyStudy} />
}
--------------------------------------------

//ApplyStudy.tsx

const ApplyStudy = () => {
	<ApplyStudyList>
		<ApplyTitle>
		</ApplyTitle
		<InnerContent/>
	</ApplyStudyList>
}
function InnerContent(){
	๋‹ค๋ฅธ ์ƒํƒœ๋“ค
	<show && <CancleFunction applyStudy = {applyStudy}/>
}
function CancleFunction(){
	<๋ฒ„ํŠผ/>
	<ํŒ์—…/>
}

ํ˜„์žฌ ๋Œ€๋žต์ ์ธ ๋‚˜์˜ ์ฝ”๋“œ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด 2๋ฒˆ ํ•ด๊ฒฐ์ฑ…์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ApplyStudy.tsx์˜ function CancleFunction์— ์žˆ๋Š” ํŒ์—…์—์„œ ๋™์˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ index.tsx์˜ api.get์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ๋‚˜๋Š” ์ฒ˜์Œ ํŒ์—…์—์„œ ๋™์˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ canclefunction์—์„œ api.get์„ ์‹คํ–‰์‹œ์ผฐ๋‹ค. ๋‹น์—ฐํ•˜๊ฒŒ๋„ re-rendering์€ ์‹คํ–‰๋˜์ง€ ์•Š์•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ถ€๋ชจ์—์„œ ๋‚ด๋ ค์˜จ props๋ฅผ ์ž์‹์—์„œ ๋‹ค์‹œ getํ•œ๋‹ค๊ณ  ํ•ด์„œ redering์ด ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ƒ๊ฐ์„ ํ•ด๋ดค๋‹ค. ์–ด๋–ป๊ฒŒํ•˜๋ฉด ๋ถ€๋ชจ์—์„œ ๋™์˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ง€ํ•˜๊ณ  ๋‹ค์‹œ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์„๊นŒ?

=> ๊ณ ๋ฏผ์— ๋Œ€ํ•œ ๋‹ต์„ ์ƒ๊ฐํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์ง€๋งŒ, ๋งŒ์•ฝ ApplyStudy์— refresh ํ•จ์ˆ˜๋ฅผ ๋‚ด๋ ค์ฃผ๊ณ  ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ๋™์˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋˜์ง€ ์•Š์„๊นŒ?๋ผ๋Š” ์ƒ๊ฐ์„ ํ•˜์˜€๊ณ , ํ•ด๋‹น ์ƒ๊ฐ์„ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

refresh ์ฝ”๋“œ๋Š” ์ด๋ ‡๋‹ค

  const refreshStudyStatus = async () => {
    const refreshStudy = await api.getApplyStudy();
    setApplyStudys(refreshStudy);
  };

ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ applyStudy๋ฅผ ๊ฐ€์ ธ์™€์„œ setState๋ฅผ ํ†ตํ•ด ๋‹ค์‹œ ๋žœ๋”๋งํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ, ํ˜„์žฌ ํ•ด๊ฒฐ์ด ๋œ ๋ถ€๋ถ„์€ MSW์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” local ํ™˜๊ฒฝ์—์„œ๋Š” ํ•ด๊ฒฐ์ด ๋์ง€๋งŒ, ์™œ๊ทธ๋Ÿฌ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋Š”๋ฐ ๋ฐฐํฌ๋ฅผ ํ•œ ๋’ค, ๋‹ค์‹œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด ๋ดค๋Š”๋ฐ ๋˜‘๊ฐ™์ด ๋ Œ๋”๋ง์ด ๋‹ค์‹œ ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๋‹ค์Œ ์ฃผ์— ํ•ด๊ฒฐํ•ด ๋ณผ ์ƒ๊ฐ์ด๋‹ค.

profile
์ฐจ๊ทผ์ฐจ๊ทผ ์„ฑ์žฅํ•˜๋Š” ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค

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