React-native-router-flux: ์งˆ๋ฌธ: ์žฅ๋ฉด๋ณ„ ๋’ค๋กœ ๋ฒ„ํŠผ ๋™์ž‘ [Android]

์— ๋งŒ๋“  2016๋…„ 09์›” 06์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: aksonov/react-native-router-flux

๋‚ด๊ฐ€ ์„ค์น˜ํ•œ ํ˜„์žฌ ๋ฒ„์ „(3.35.0)์—๋Š” Router $์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ backButtonHandler ๋ฅผ ํ• ๋‹นํ•˜๋Š” ์กฐํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์œ ์šฉํ•˜์ง€๋งŒ ๋‚ด ์•ฑ์€ ํŠน์ • ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ๋™์ž‘์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ๋ฒ„์ „์—์„œ๋Š” Actions.currentRouter.stack ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ์ƒ‰ ์Šคํƒ์—์„œ ํ˜„์žฌ ์ „๊ฒฝ์— ์žˆ๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ „์—ญ BackAndroid ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์š”์†Œ์˜ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์—๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ๋™์ž‘์„ ์ฒ˜๋ฆฌํ•˜๋Š” onBackButton() ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ Action API์—๋Š” currentRouter๊ฐ€ ๋…ธ์ถœ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ์—์„œ addEventListener ํ•˜๊ณ  componentWillUnmount removeEventListener ์—์„œ removeEventListener ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋” ๊นจ๋—ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

  1. Scene backButtonHandler ์†Œํ’ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. currentComponent์™€ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์ธ์ˆ˜๋ฅผ ๋’ค๋กœ ๋ฒ„ํŠผ ํ•ธ๋“ค๋Ÿฌ์˜ ํ˜ธ์ถœ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”?

๋ฒ„์ „

  • ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ๋ผ์šฐํ„ฐ ํ”Œ๋Ÿญ์Šค - 3.35.0
  • ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ 0.28.0

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

RN์„ 0.32๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ๋Œ€๋ถ€๋ถ„์˜ ์žฅ๋ฉด์— ๋Œ€ํ•œ ์ „์—ญ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ˆ˜ ์žฅ๋ฉด์˜ ๊ฒฝ์šฐ BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack) ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. RN์€ ๋‚˜์ค‘ ๋ฆฌ์Šค๋„ˆ ์ฝœ๋ฐฑ์„ ๋จผ์ € ํ˜ธ์ถœํ•˜๊ณ  ๊ธ€๋กœ๋ฒŒ ํ•ธ๋“ค๋Ÿฌ๋Š” ์ดํ›„ ๋ฆฌ์Šค๋„ˆ ์ฝœ๋ฐฑ์—์„œ return true ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์Šค๋„ˆ ์ฝœ๋ฐฑ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์ด ๊ฒŒ์‹œ๋ฌผ์˜ ๋‚ด์šฉ์„ ์ œ๊ฑฐํ•˜๊ณ  You are already in the root scene ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ๋ฐœํ–‰๋ฌผ์„ ๋งŒ๋“ค์–ด ๊ฑฐ๊ธฐ์— ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค.

์ด๋ด, ๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  componentWillUnmount ๋ฉ”์„œ๋“œ๋กœ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ œ๊ฑฐํ•ด๋„ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ?

RN์„ 0.32๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ๋Œ€๋ถ€๋ถ„์˜ ์žฅ๋ฉด์— ๋Œ€ํ•œ ์ „์—ญ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ˆ˜ ์žฅ๋ฉด์˜ ๊ฒฝ์šฐ BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack) ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. RN์€ ๋‚˜์ค‘ ๋ฆฌ์Šค๋„ˆ ์ฝœ๋ฐฑ์„ ๋จผ์ € ํ˜ธ์ถœํ•˜๊ณ  ๊ธ€๋กœ๋ฒŒ ํ•ธ๋“ค๋Ÿฌ๋Š” ์ดํ›„ ๋ฆฌ์Šค๋„ˆ ์ฝœ๋ฐฑ์—์„œ return true ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์Šค๋„ˆ ์ฝœ๋ฐฑ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰