ํ”„๋กœ์ ํŠธ ๐Ÿ› ๏ธ/ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

onAppear์™€ onDisappear์˜ ํ˜ธ์ถœ ํƒ€์ด๋ฐ

WonderPark 2023. 6. 10. 02:26

๋ฌธ์ œ์ƒํ™ฉ

ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋˜ ์™€์ค‘ ํŒ”๋กœ์šฐ ํŒ”๋กœ์ž‰ ๊ธฐ๋Šฅ์„ ๋„ฃ๋Š” ๊ณผ์ •์—์„œ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค ๐Ÿšจ

 

์–ด๋–ค ์ด์Šˆ๋ƒ๋ฉด!!??

 

์„ค๋ช…์—์„œ ๋ฉ”๊ฑฐ์ง„๋””ํ…Œ์ผ๋ทฐ๋ฅผ “1๋ฒˆ ๋ทฐ”, ์œ ์ €ํ”„๋กœํ•„๋ทฐ๋ฅผ “2๋ฒˆ ๋ทฐ”๋กœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

1๋ฒˆ๋ทฐ → 2๋ฒˆ๋ทฐ๋กœ ๊ฐ€๋Š” ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ทฐ ๊ณ„์ธต์—์„œ

1๋ฒˆ๋ทฐ์—์„œ 2๋ฒˆ๋ทฐ๋กœ ๋“ค์–ด๊ฐ€ ๊ตฌ๋…ํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธํ›„์— ๋’ค๋กœ๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ 2๋ฒˆ๋ทฐ๋กœ ๋“ค์–ด๊ฐ€๋ฉด

 

๋‚ด๊ฐ€ ํ•ด๋‹น ์‚ฌ์šฉ์ž๋ฅผ ๊ตฌ๋…ํ–ˆ๊ณ , ๊ทธ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ์ผœ์ค˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— “๊ตฌ๋…์ค‘” ๋ฒ„ํŠผ์ด ๋‚˜์™€์•ผํ•˜๊ณ , ๊ตฌ๋…์ž์—๋Š” 1๋ช…์ด ๋– ์žˆ์–ด์•ผํ•œ๋‹ค. 

 

์ด๋ ‡๊ฒŒ ..!

 

 

๊ทผ๋ฐ ๋ฌธ์ œ๋Š” 2๋ฒˆ๋ทฐ์—์„œ ์—…๋ฐ์ดํŠธํ›„์— 1๋ฒˆ๋ทฐ๋กœ ๋’ค๋กœ๊ฐ€๊ธฐ ํ›„ ๋‹ค์‹œ 2๋ฒˆ๋ทฐ๋กœ ๋“ค์–ด๊ฐ”์„๋•Œ ๋ฐ˜์˜์ด ์•ˆ๋˜๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค…!

 

 

์ผ๋‹จ ๊ตฌ๋…ํ•˜๊ธฐ ๋กœ์ง์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์ž๋ฉด,

  1. ๊ตฌ๋…ํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.
  2. ๊ตฌ๋…์„ ๋ˆ„๋ฅด๊ณ , 2๋ฒˆ๋ทฐ์—์„œ 1๋ฒˆ๋ทฐ๋กœ ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ๋•Œ, onDisappear ๋ฉ”์†Œ๋“œ์—์„œ userUpdate ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. (๊ตฌ๋…ํ–ˆ๋‹ค๋Š” ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ์œ„ํ•จ. )
  3. userUpdate๋ฅผ ํ•ด์ค€ ํ›„์— ๋ทฐ๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ , 1๋ฒˆ๋ทฐ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋•Œ 1๋ฒˆ๋ทฐ์˜ onAppear ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ถˆ๋ ค์ง„๋‹ค.

 

๊ทผ๋ฐ ๋ฌธ์ œ๋Š”..!

userUpdate๊ฐ€ 2๋ฒˆ๋ทฐ์˜ onDisappear ๋ธ”๋ก์—์„œ ์ˆ˜ํ–‰๋˜๋ฉด,  ๊ทธ ์—…๋ฐ์ดํŠธ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ 1๋ฒˆ๋ทฐ์—์„œ fetch ํ•ด์™€์•ผํ•˜๋Š”๋ฐ,

fetch ์ž‘์—…์„ ์œ„ํ•œ userFetch ๋ฉ”์†Œ๋“œ๋ฅผ 1๋ฒˆ๋ทฐ์˜ onAppear์—์„œ ํ˜ธ์ถœํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ ,

์—…๋ฐ์ดํŠธ ๋œ ์œ ์ €์ •๋ณด๊ฐ€ ๋ฐ˜์˜์ด ์•ˆ๋˜๊ณ  ์žˆ์—ˆ๋‹ค.

 

 

์›์ธ

๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ๋ฐ˜์˜์ด ์•ˆ๋˜์—ˆ์„๊นŒ?

๋จผ์ € 1๋ฒˆ๋ทฐ์˜ onAppear๊ณผ 2๋ฒˆ๋ทฐ์˜ onDisappear์˜ ํ˜ธ์ถœ ์ˆœ์„œ๋ฅผ ๋จผ์ € ํ™•์ธํ•ด๋ณด์ž.

 

์—ฌ๊ธฐ์„œ ์ž ๊น !

SwiftUI ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด , onAppear๋ผ๋Š” ๋ฉ”์†Œ๋“œ์™€ onDisappear๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ๋จผ์ € ์–ด๋–ค ๋ฉ”์†Œ๋“œ์ธ์ง€ ์•Œ์•„๋ณด์ž!

 

onApear

๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋ณด๋ฉด onAppear๋Š” “before this view appears” ๋ทฐ๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๋Š” ๋ฉ”์†Œ๋“œ์ด๊ณ 

 

onDisappear

onDisappear ๋ฉ”์†Œ๋“œ๋Š” “after this view disappears” ๋ทฐ๊ฐ€ ์‚ฌ๋ผ์ง€๊ธฐ ์ „์— ์‹คํ–‰๋˜๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค.

 

 

onAppear์™€ onDisappear์˜ ํ˜ธ์ถœ ์ˆœ์„œ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด

1๋ฒˆ๋ทฐ์˜ onAppear์™€ 2๋ฒˆ๋ทฐ์˜ onDisappear์— ๊ฐ๊ฐ print ๋ฅผ ๋‹ฌ์•„์ฃผ์—ˆ๋‹ค.

 

 

 

์ด๋ ‡๊ฒŒ ํ”„๋ฆฐํŠธ๋ฅผ ํ•ด์ฃผ๊ณ  2๋ฒˆ๋ทฐ → 1๋ฒˆ๋ทฐ๋กœ ์ด๋™ํ• ๋•Œ ํ”„๋ฆฐํŠธ๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ

 

 

2๋ฒˆ๋ทฐ์˜ onDisappear ์ด ํ˜ธ์ถœ๋˜๊ธฐ ์ „์— 1๋ฒˆ๋ทฐ์˜ onAppear ๊ฐ€ ๋จผ์ € ํ˜ธ์ถœ๋๋‹ค.. ?

 

2๋ฒˆ๋ทฐ๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ , 1๋ฒˆ๋ทฐ๊ฐ€ ํ˜ธ์ถœ๋˜๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ,

2๋ฒˆ๋ทฐ๊ฐ€ ์‚ฌ๋ผ์ง€๊ธฐ ์ „์— 1๋ฒˆ๋ทฐ๊ฐ€ ํ˜ธ์ถœ์ด ๋˜๊ณ , ๊ทธ ํ›„์— 2๋ฒˆ๋ทฐ๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ์ˆœ์„œ์ด๋‹ค…!

 

๊ทธ๋ ‡๋‹ค๋ฉด 1๋ฒˆ๋ทฐ → 2๋ฒˆ๋ทฐ → 1๋ฒˆ๋ทฐ ์ˆœ์„œ๋กœ ์ด๋™ํ–ˆ์„๋•Œ 1๋ฒˆ๋ทฐ์™€ 2๋ฒˆ๋ทฐ ๊ฐ๊ฐ์˜ onAppear , onDisappear ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ์ˆœ์„œ๋ฅผ ํ™•์ธํ•ด๋ณด์ž.

 

 

์ „์ฒด์ ์ธ ์‚ฌ์ดํด์„ ํ”„๋ฆฐํŠธํ•ด์„œ ํ™•์ธํ•ด๋ณด๋ฉด ์ด๋ ‡๋‹ค.

  1. 1๋ฒˆ๋ทฐ onAppear ํ˜ธ์ถœ
  2. 1๋ฒˆ๋ทฐ→ 2๋ฒˆ๋ทฐ๋กœ ์ด๋™ํ• ๋•Œ 2๋ฒˆ๋ทฐ onAppear ํ˜ธ์ถœ
  3. 1๋ฒˆ๋ทฐ onDisappear ํ˜ธ์ถœ
  4. 2๋ฒˆ๋ทฐ → 1๋ฒˆ๋ทฐ ์ด๋™ํ• ๋•Œ 1๋ฒˆ๋ทฐ onAppear ํ˜ธ์ถœ
  5. 2๋ฒˆ๋ทฐ onDisappear ํ˜ธ์ถœ

 

์ฆ‰, ์ด๋Ÿฐ ์ˆœ์„œ์ด๊ธฐ ๋•Œ๋ฌธ์—

๋‹น์—ฐํžˆ 2๋ฒˆ๋ทฐ์˜ onDisappear ์—์„œ ๋ถˆ๋ €๋˜ update๋ฉ”์†Œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— 1๋ฒˆ๋ทฐ์˜ onAppear ๋ฉ”์†Œ๋“œ๊ฐ€ ๋จผ์ € ๋ถˆ๋ ค์ ธ์„œ

userFetch ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—…๋ฐ์ดํŠธ ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ fetch ํ•œ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ž˜์„œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐ”๋กœ ๋ฐ˜์˜์ด ๋˜์ง€์•Š์•˜๋˜๊ฒƒ…!!

 

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

๊ทธ๋ž˜์„œ ๋‚œ 2๋ฒˆ๋ทฐ์˜ onDisappear์—์„œ updateUser ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ ,

updateUser ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์™„๋ฃŒ ํ›„์— fetchUser ๋ฉ”์†Œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก

receiveValue ๋ธ”๋ก์•ˆ์— fetchUser ๋ฉ”์†Œ๋“œ๋ฅผ ๋ถˆ๋Ÿฌ์ฃผ๋Š” ๋กœ์ง์œผ๋กœ ์ˆ˜์ •ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

 

 

๋А๋‚€์ 

๋‹จ์ˆœํžˆ onDisappear๋Š” ๋ทฐ๊ฐ€ ์‚ฌ๋ผ๊ธฐ์ „์— ์‹คํ–‰๋˜๊ณ , onAppear๋Š” ๋ทฐ๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๋Š”๊ตฌ๋‚˜ ๋ผ๊ณ ๋งŒ ์•Œ๊ณ ์žˆ์—ˆ๋˜ ๋‚˜๋ฅผ ๋˜ ๋ฐ˜์„ฑํ•˜๊ณ ,, SwiftUI์˜ LifeCycle์— ๋Œ€ํ•ด์„œ ์ž์„ธํ•˜๊ฒŒ ๊ณต๋ถ€ํ•˜๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๋‹ค ^^!