๋ฌธ์ ์ํฉ
ํ๋ก์ ํธ๋ฅผ ํ๋ ์์ค ํ๋ก์ฐ ํ๋ก์ ๊ธฐ๋ฅ์ ๋ฃ๋ ๊ณผ์ ์์ ์ด์๊ฐ ๋ฐ์ํ๋ค ๐จ
์ด๋ค ์ด์๋๋ฉด!!??
์ค๋ช ์์ ๋ฉ๊ฑฐ์ง๋ํ ์ผ๋ทฐ๋ฅผ “1๋ฒ ๋ทฐ”, ์ ์ ํ๋กํ๋ทฐ๋ฅผ “2๋ฒ ๋ทฐ”๋ก ํ๊ฒ ์ต๋๋ค.
1๋ฒ๋ทฐ → 2๋ฒ๋ทฐ๋ก ๊ฐ๋ ๋ค๋น๊ฒ์ด์ ๋ทฐ ๊ณ์ธต์์
1๋ฒ๋ทฐ์์ 2๋ฒ๋ทฐ๋ก ๋ค์ด๊ฐ ๊ตฌ๋ ํ๊ธฐ ๋ฒํผ์ ๋๋ฅธํ์ ๋ค๋ก๊ฐ๋ค๊ฐ ๋ค์ 2๋ฒ๋ทฐ๋ก ๋ค์ด๊ฐ๋ฉด
๋ด๊ฐ ํด๋น ์ฌ์ฉ์๋ฅผ ๊ตฌ๋ ํ๊ณ , ๊ทธ ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธ๋ฅผ ์์ผ์ค์๊ธฐ ๋๋ฌธ์ “๊ตฌ๋ ์ค” ๋ฒํผ์ด ๋์์ผํ๊ณ , ๊ตฌ๋ ์์๋ 1๋ช ์ด ๋ ์์ด์ผํ๋ค.
์ด๋ ๊ฒ ..!

๊ทผ๋ฐ ๋ฌธ์ ๋ 2๋ฒ๋ทฐ์์ ์ ๋ฐ์ดํธํ์ 1๋ฒ๋ทฐ๋ก ๋ค๋ก๊ฐ๊ธฐ ํ ๋ค์ 2๋ฒ๋ทฐ๋ก ๋ค์ด๊ฐ์๋ ๋ฐ์์ด ์๋๋ ์ด์๊ฐ ๋ฐ์ํ๋ค…!
์ผ๋จ ๊ตฌ๋ ํ๊ธฐ ๋ก์ง์ ๋ํด ์ค๋ช ํ์๋ฉด,
- ๊ตฌ๋ ํ๊ธฐ ๋ฒํผ์ ๋๋ฅธ๋ค.
- ๊ตฌ๋ ์ ๋๋ฅด๊ณ , 2๋ฒ๋ทฐ์์ 1๋ฒ๋ทฐ๋ก ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ฅผ๋, onDisappear ๋ฉ์๋์์ userUpdate ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค. (๊ตฌ๋ ํ๋ค๋ ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธ ํ๊ธฐ ์ํจ. )
- 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๋ฒ๋ทฐ onAppear ํธ์ถ
- 1๋ฒ๋ทฐ→ 2๋ฒ๋ทฐ๋ก ์ด๋ํ ๋ 2๋ฒ๋ทฐ onAppear ํธ์ถ
- 1๋ฒ๋ทฐ onDisappear ํธ์ถ
- 2๋ฒ๋ทฐ → 1๋ฒ๋ทฐ ์ด๋ํ ๋ 1๋ฒ๋ทฐ onAppear ํธ์ถ
- 2๋ฒ๋ทฐ onDisappear ํธ์ถ
์ฆ, ์ด๋ฐ ์์์ด๊ธฐ ๋๋ฌธ์
๋น์ฐํ 2๋ฒ๋ทฐ์ onDisappear ์์ ๋ถ๋ ๋ update๋ฉ์๋๊ฐ ์คํ๋๊ธฐ ์ ์ 1๋ฒ๋ทฐ์ onAppear ๋ฉ์๋๊ฐ ๋จผ์ ๋ถ๋ ค์ ธ์
userFetch ๋ฉ์๋๋ฅผ ์คํํ๊ธฐ ๋๋ฌธ์ ์ ๋ฐ์ดํธ ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ fetch ํ๊ฒ์ด๋ค.
๊ทธ๋์ ์ ๋ฐ์ดํธ๊ฐ ๋ฐ๋ก ๋ฐ์์ด ๋์ง์์๋๊ฒ…!!
ํด๊ฒฐ๋ฐฉ๋ฒ
๊ทธ๋์ ๋ 2๋ฒ๋ทฐ์ onDisappear์์ updateUser ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ,
updateUser ๋น๋๊ธฐ ์ฒ๋ฆฌ ์๋ฃ ํ์ fetchUser ๋ฉ์๋๊ฐ ์คํ๋๋๋ก
receiveValue ๋ธ๋ก์์ fetchUser ๋ฉ์๋๋ฅผ ๋ถ๋ฌ์ฃผ๋ ๋ก์ง์ผ๋ก ์์ ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.

๋๋์
๋จ์ํ onDisappear๋ ๋ทฐ๊ฐ ์ฌ๋ผ๊ธฐ์ ์ ์คํ๋๊ณ , onAppear๋ ๋ทฐ๊ฐ ๋ฑ์ฅํ๊ธฐ ์ ์ ์คํ๋๋๊ตฌ๋ ๋ผ๊ณ ๋ง ์๊ณ ์์๋ ๋๋ฅผ ๋ ๋ฐ์ฑํ๊ณ ,, SwiftUI์ LifeCycle์ ๋ํด์ ์์ธํ๊ฒ ๊ณต๋ถํ๋ ๊ณ๊ธฐ๊ฐ ๋์๋ค ^^!
'ํ๋ก์ ํธ ๐ ๏ธ > ํธ๋ฌ๋ธ ์ํ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| task(id: ) ์ธ์ ์ฌ์ฉํ๋ฉด ์ข์๊น? (0) | 2023.06.10 |
|---|---|
| PassthroughSubject์ onReceive ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ๋์ด์คํ ๋น๋๊ธฐ์ฒ๋ฆฌํ๊ธฐ (0) | 2023.06.10 |
| Firebase RESTAPI๋ก ๋ฐ์ดํฐ 20๊ฐ ์ด์ ๋ฐ์์ค๊ธฐ (0) | 2023.06.10 |