React-Navigation ํ๋ฉด ํฌ์ปค์ค ๊ฐ์ง ๋ฌธ์ ํด๊ฒฐ
๐ธ TIL
๐ฅ ๋ฌธ์ ์
๊ตฌํํ๋ ๊ธฐ๋ฅ ์ค์ A screen์์ B screen์ผ๋ก navigateํ ํ, B screen์์ A screen์ผ๋ก goBackํ์ ๋ A screen์์ API ํธ์ถ์ด๋ ์ฌ๋ ๋๋ง์ด ์ด๋ฃจ์ด์ ธ์ผ ํ๋ ์ํฉ์ด ์๊ฒผ๋ค.
๋ค์ ๋งํด B screen์์ useContext์ ์๋ ์ํ ๊ฐ์ ๋ณ๊ฒฝํ์๊ณ , goBack์ ํตํด A screen ์ผ๋ก ๋์์์ ๋ ๋ณ๊ฒฝ๋ ๊ฐ์ด ์ ์ฉ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฌ๋ ๋๋ง์ ํด์ผ๋ง ํ๋ ๊ฒ์ธ๋ฐ goBack์ ์ฌ์ฉํด์ผํ๊ธฐ ๋๋ฌธ์ A screen์์ ์ฌ๋ ๋๋ง์ด ์ด๋ฃจ์ด์ง์ง ์๊ณ ์๋ค.
๐ ํด๊ฒฐ ๋ฐฉ์
react-navigation์ ์ด 3๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
- Listening to the 'focus' event with an event listener.
- Using the useFocusEffect hook provided by react-navigation.
- Using the useIsFocused hook provided by react-navigation.
์ด 3๊ฐ์ง ๋ฐฉ๋ฒ ์ค 3๋ฒ์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ์๋ค.
const isFocused = useIsFocused();
useEffect(() => {
if (isFocused) console.log('Focused!!');
}, [isFocused]);
useIsFocused๋ฅผ ์ฌ์ฉํ์ฌ useEffect ์์์ ์ฒ๋ฆฌํด์ฃผ์ด๋ ์ข๊ณ useFocusEffect๋ฅผ ์ฌ์ฉํด์ฃผ์ด๋ ์ข์ ๊ฒ ๊ฐ๋ค.
์ด๋ฐ ๊ธฐ๋ฅ์ด ์๋์ค ๋ชจ๋ฅด๊ณ ์ฉ์ฉ๋๊ณ ์์๋๋ฐ ๊ตฌ๊ธ๋ง์ ์ญ์ ์ ์ด์ผ........
์! ๊ตฌ๊ธ๋งํ๋ค๊ฐ ํ๋ ๋ ์์๋ธ ๊ฒ์ ๋ง์ฝ B screen์์ A screen ์ผ๋ก ์์ ๋๋ง ๊ฐ์ง ํด์ผํ๊ณ C screen์์ ์์ ๋๋ ๊ฐ์งํ์ง ์์์ผ ํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ๋ ์๋ค๊ณ ํ๋ค.
github.com/react-navigation/react-navigation/issues/684
๋ง์น๋ฉฐ ๐ธ
์ ์๋ ์๋๋ ๊ฒ์ด ์์ผ๋ฉด ์ข์ ํ๊ณ ๋ง๋งํ๊ณ ์ด๋์ ๋ฌผ์ด๋ณด๊ธฐ ๊ธ๊ธํ๋๋ฐ ์ด์ ๋ ์กฐ๊ธ์ฉ ๊ตฌ๊ธ๋ง์ ์์ ๊ฐ์ด ์๊ธฐ๊ณ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ๋ฌผ์ด๋ณด๋ ํ์๊ฐ ์ ๋ง ๋ง์ด ์ค์๋ค.
ํผ์ ํด๊ฒฐํ ์ ์๋ ํ์ด ๊ธธ๋ฌ์ง๊ณ ์๋ ๊ฒ ๊ฐ์์ ๋ฟ๋ฏํ๊ณ ์ด์ ๋ ์ด๋ ํ ์ํฉ์ด ์จ๋ค๊ณ ํด๋ ์ ๋ณด๋ค ๋ ๋๋ ต๊ณ ์ข ๋ ๋์ ์ ์ผ๋ก ๋ฐ์ด๋ค๊ณ ์๋ ๋ด ์์ ์ ๋ณด๊ฒ ๋์ด ๋ด๊ฐ ๋๋ฌด ๋๊ฒฌํ๋ค!
( ๋๊ฒฌํ ๋๋ฅผ ์ํด์ ์ค๋ ์ ๋ ์๋ ์์ผ๋ก ๋งฅ์ฃผ๋ฅผ ์ค์ผ๊ฒ ๋ค ํฟ ๐คช )