๋ด๊ฐ ์ค์นํ ํ์ฌ ๋ฒ์ (3.35.0)์๋ Router
$์ ๋ํ ์ฌ์ฉ์ ์ ์ backButtonHandler
๋ฅผ ํ ๋นํ๋ ์กฐํญ์ด ์์ต๋๋ค. ์ด๊ฒ์ด ์ ์ฉํ์ง๋ง ๋ด ์ฑ์ ํน์ ํ๋ฉด์์ ์ฌ์ฉ์ ์ง์ ๋์์ด ํ์ํฉ๋๋ค.
์ด์ ๋ฒ์ ์์๋ Actions.currentRouter.stack
๋ฅผ ์ฌ์ฉํ์ฌ ํ์ ์คํ์์ ํ์ฌ ์ ๊ฒฝ์ ์๋ ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ์ ธ์ค๋ ์ ์ญ BackAndroid
์ด๋ฒคํธ ๋ฆฌ์ค๋๊ฐ ์์์ต๋๋ค. ๊ตฌ์ฑ ์์์ ํ๋กํ ํ์
์ฒด์ธ์๋ ์ฌ์ฉ์ ์ง์ ๋์์ ์ฒ๋ฆฌํ๋ onBackButton()
๋ฉ์๋๊ฐ ์์ต๋๋ค.
์ Action API์๋ currentRouter๊ฐ ๋
ธ์ถ๋์ด ์์ง ์์ต๋๋ค. ๋ชจ๋ ๊ตฌ์ฑ ์์์์ addEventListener
ํ๊ณ componentWillUnmount
removeEventListener
์์ removeEventListener ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ฌ์ฑํ๋ ๋ ๊นจ๋ํ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋ค์ ์ค ํ๋๋ฅผ ์ ์ํฉ๋๋ค.
Scene
backButtonHandler
์ํ์ด ์์ต๋๋ค.์ฌ๋ฌ๋ถ์ ์ด๋ป๊ฒ ์๊ฐํ์ธ์?
์ด ๊ฒ์๋ฌผ์ ๋ด์ฉ์ ์ ๊ฑฐํ๊ณ You are already in the root scene
์ ๋ํด ๋ณ๋์ ๋ฐํ๋ฌผ์ ๋ง๋ค์ด ๊ฑฐ๊ธฐ์ ์ฌ๋ ธ์ต๋๋ค.
์ด๋ด, ๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์๊ณ componentWillUnmount ๋ฉ์๋๋ก ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ ๊ฑฐํด๋ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ค๋ฅธ ํด๊ฒฐ์ฑ ์ ์ฐพ์์ต๋๊น?
RN์ 0.32๋ก ์ ๊ทธ๋ ์ด๋ํด์ผ ํฉ๋๋ค.
์ด๋ฅผ ํตํด ๋๋ถ๋ถ์ ์ฅ๋ฉด์ ๋ํ ์ ์ญ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด๋ฌํ ํน์ ์ฅ๋ฉด์ ๊ฒฝ์ฐ BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack)
๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. RN์ ๋์ค ๋ฆฌ์ค๋ ์ฝ๋ฐฑ์ ๋จผ์ ํธ์ถํ๊ณ ๊ธ๋ก๋ฒ ํธ๋ค๋ฌ๋ ์ดํ ๋ฆฌ์ค๋ ์ฝ๋ฐฑ์์ return true
๋ฅผ ํธ์ถํ์ง ์์ ๊ฒ์
๋๋ค. ๋ ๋์ ์๋ฃจ์
์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ฆฌ์ค๋ ์ฝ๋ฐฑ์ ์ ๊ฑฐํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
RN์ 0.32๋ก ์ ๊ทธ๋ ์ด๋ํด์ผ ํฉ๋๋ค.
์ด๋ฅผ ํตํด ๋๋ถ๋ถ์ ์ฅ๋ฉด์ ๋ํ ์ ์ญ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด๋ฌํ ํน์ ์ฅ๋ฉด์ ๊ฒฝ์ฐ
BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack)
๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. RN์ ๋์ค ๋ฆฌ์ค๋ ์ฝ๋ฐฑ์ ๋จผ์ ํธ์ถํ๊ณ ๊ธ๋ก๋ฒ ํธ๋ค๋ฌ๋ ์ดํ ๋ฆฌ์ค๋ ์ฝ๋ฐฑ์์return true
๋ฅผ ํธ์ถํ์ง ์์ ๊ฒ์ ๋๋ค. ๋ ๋์ ์๋ฃจ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ฆฌ์ค๋ ์ฝ๋ฐฑ์ ์ ๊ฑฐํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค.