React-native-router-flux: ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๋งค์šฐ ๋Š๋ฆผ

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

์•ˆ๋…•ํ•˜์„ธ์š”, ์šฐ์„ : ๋ฉ‹์ง„ ๋„์„œ๊ด€์ž…๋‹ˆ๋‹ค!
API์™€ ์‚ฌ์šฉ๋ฒ•์€ ์ •๋ง ๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค!

Nexus 5์˜ Android์—์„œ RNRF๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์žˆ์ง€๋งŒ ์‘๋‹ต์ด ๋งค์šฐ ๋Š๋ฆฝ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
https://drive.google.com/file/d/0B-zpEic041zoR1Fhd0VhTnA5VkU/view?usp=sharing

์™œ ๊ทธ๋Ÿฐ์ง€ ์•„์„ธ์š”?
๊ฐ์‚ฌ ํ•ด์š”!

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

์•ˆ๋…•ํ•˜์„ธ์š”,

๋งˆ์นจ๋‚ด ๋‚ด ์žฅ์น˜/์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ๋Š๋ฆฐ ์ด์œ ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด ์ž์‹ ์˜ ์‹ค์ˆ˜ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค.
๊ฐ์†๊ธฐ์—์„œ console.log(action)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋Š๋ฆฐ ์ผ์ด ๋งŽ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์žฅ์น˜์—์„œ ์‹คํ–‰ํ•  ๋•Œ. ํฌ๋กฌ ๋””๋ฒ„๊น…์ด ์ผœ์ ธ์žˆ์„ ๋•Œ ํ›จ์”ฌ ๋” ๊ฐ•๋ ฅํ•œ ํฌ๋กฌ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค (๋…ธํŠธ๋ถ vs ์žฅ์น˜).

๋ชจ๋“  ๋กœ๊ทธ(์•ก์…˜)๋ฅผ ์ œ๊ฑฐํ•œ ํ›„ ์ง€๊ธˆ์ด ํ›จ์”ฌ ์ข‹์Šต๋‹ˆ๋‹ค.

๋„๋””

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

์•ˆ๋“œ๋กœ์ด๋“œ๊ฐ€ ์—†๋‹ค๋Š” ๋ฌธ์ œ. ์–ด์ฉŒ๋ฉด ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊น…์„ ์‹œ๋„ ํ–ˆ์Šต๋‹ˆ๊นŒ? ์ด ๊ตฌ์„ฑ ์š”์†Œ๋Š” exNavigator๋ฅผ ๋‘˜๋Ÿฌ์‹ผ ๋ž˜ํผ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ExNavigator๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

@timsuchanek , ๋ผ์ด๋ธŒ ๋ฆฌ๋กœ๋”ฉ๊ณผ ํฌ๋กฌ ๋””๋ฒ„๊น… ์—†์ด ํ…Œ์ŠคํŠธํ•˜์…จ๋‚˜์š”? ๋‚˜๋ฅผ ์œ„ํ•ด ๋ผ์ด๋ธŒ ๋‹ค์‹œ๋กœ๋“œ ๋˜๋Š” ํฌ๋กฌ ๋””๋ฒ„๊น…์ด ์ผœ์ ธ์žˆ์„ ๋•Œ๋งŒ (๋งค์šฐ) ๋Š๋ฆฝ๋‹ˆ๋‹ค ;)

์˜ˆ, ๋””๋ฒ„๊ฑฐ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์ฐพ์€ ๊ฒƒ :
์ด๋ฏธ ํ•œ ๋ฒˆ ์—ด๋ฆฐ ๊ฒฝ์šฐ ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค.
์ฒ˜์Œ 1~2๋ฒˆ๋งŒ ๋Š๋ฆฝ๋‹ˆ๋‹ค.
ExNavigator ๋…๋ฆฝ ์‹คํ–‰ํ˜•์„ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@timsuchanek ์‹ ๊ณ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์—†์œผ๋ฉด ๋Š๋ฆฐ๊ฐ€์š”(์˜ˆ: ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌ์„ฑ์ด ์—†๋Š” <Scheme> )? ๋” ๋‚˜๋น ์ง€๋ฉด ์„ฑ๋Šฅ์„ ์œ„ํ•ด ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ํƒ€ํ˜‘ํ•  ์šฉ์˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ๋„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‚ด๊ฐ€ ์ง์ ‘ ์‹œ๋„ํ•  ๊ฒƒ์ด๋‹ค.

Android 4.4์—์„œ ์˜ˆ์ œ ์•ฑ์˜ ์†๋„๊ฐ€ ๋Š๋ ค์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฒ„ํŠผ ํด๋ฆญ์—์„œ ๊ฒฝ๋กœ ๋ณ€๊ฒฝ๊นŒ์ง€ ~2์ดˆ ์†Œ์š”). ๊ทธ๋ฆฌ๊ณ  exNavigator ์˜ˆ์ œ์—๋Š” ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ํฌ๋กฌ ๋””๋ฒ„๊น…์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ง€์—ฐ์ด ๋งˆ์ˆ ์ฒ˜๋Ÿผ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค -__________-

@sbycrosz ํƒญ ๋ง‰๋Œ€ ๋˜๋Š” ๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ ๋Š๋ฆฝ๋‹ˆ๊นŒ?

์˜ค๋Š˜ Android์—์„œ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ํฌ๋กฌ ๋””๋ฒ„๊น…์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํƒญ ์‚ฌ์ด์˜ '์ „ํ™˜' ์• ๋‹ˆ๋ฉ”์ด์…˜์— ์ง€์—ฐ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์กฐ์‚ฌ ์ค‘์ž…๋‹ˆ๋‹ค.

ํƒญ์—์„œ '์Šค์œ„์น˜'๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ๋Š”๋ฐ ํƒญ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ์—๋Š” ์•ฝ 1.5์ดˆ ์ •๋„๋กœ ๋„ˆ๋ฌด ๋Š๋ฆฝ๋‹ˆ๋‹ค. ํฌ๋กฌ ๋””๋ฒ„๊ทธ๋ฅผ ๋„๊ณ  ๋ผ์ด๋ธŒ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•ด๋ดค๋Š”๋ฐ ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค.

์ตœ์‹  ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜ํ•œ debug.js ๋‚ด์—์„œ ์ฝ˜์†” ๋กœ๊น…์˜ ์ฃผ์„์„ ์ œ๊ฑฐํ•˜๊ณ  ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

Android ํƒœ๋ธ”๋ฆฟ์˜ ๋ฒ„์ „ 2.3.1์—์„œ ์˜ˆ์ œ ์•ฑ์„ ๋””๋ฒ„๊ทธํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ๋งค์šฐ ๋Š๋ ธ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ์€ ์ฃผ์„ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ debug.js๊ฐ€ ์žˆ๋Š” ์ฝ˜์†” ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค.
๋˜ํ•œ ๊ฐ„๋‹จํ•œ ์•ฑ(๋ฒ„์ „ 2.3.1 ์‚ฌ์šฉ)์˜ ๋ฆด๋ฆฌ์Šค ๋นŒ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  Samsung Galaxy S3์—์„œ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋ชจ๋“  ๊ฒƒ์ด ๋งค์šฐ ๋Š๋ ธ์Šต๋‹ˆ๋‹ค.
"@exponent/react-native-navigator": "^0.3.5"๋ฅผ ์ตœ์‹ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ•ต์‹ฌ ํƒ์ƒ‰๊ธฐ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค

ํŒŒ๋ฒจ.

24ํ™” 2016๋…„ ะณ., ะฒ 21:18, doomsower [email protected] ะฝะฐะฟะธัะฐะป(ะฐ):

Android ํƒœ๋ธ”๋ฆฟ์˜ ๋ฒ„์ „ 2.3.1์—์„œ ์˜ˆ์ œ ์•ฑ์„ ๋””๋ฒ„๊ทธํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ๋งค์šฐ ๋Š๋ ธ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ์€ ์ฃผ์„ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ debug.js๊ฐ€ ์žˆ๋Š” ์ฝ˜์†” ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค.
๋˜ํ•œ ๊ฐ„๋‹จํ•œ ์•ฑ(๋ฒ„์ „ 2.3.1 ์‚ฌ์šฉ)์˜ ๋ฆด๋ฆฌ์Šค ๋นŒ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  Samsung Galaxy S3์—์„œ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋ชจ๋“  ๊ฒƒ์ด ๋งค์šฐ ๋Š๋ ธ์Šต๋‹ˆ๋‹ค.
"@exponent/react-native-navigator": "^0.3.5"๋ฅผ ์ตœ์‹ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ํšŒ์‹ ํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.

์•ˆ๋…•ํ•˜์„ธ์š”,

์ €๋„ ๋Š๋ ค์ง€๋Š” ํ˜„์ƒ์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํฌ๋กฌ ๋””๋ฒ„๊น…์ด ํ™œ์„ฑํ™”๋˜๋ฉด ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค.
์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ(Android ๋ฐ iOS) ๋ฐ ๋ฌผ๋ฆฌ์  ์žฅ์น˜์˜ ๋™์ž‘์€ ํฌ๋กฌ ๋””๋ฒ„๊น…์ด ๋น„ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด "@exponent/react-native-navigator"๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋„๋””

์•ˆ๋…•ํ•˜์„ธ์š”,

๋‚˜๋„์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ dev ๋ชจ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ github์˜ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://github.com/facebook/react-native/issues/3049

๋‚˜๋Š” ๋‹ค๋ฅธ ๋ผ์šฐํ„ฐ๋ฅผ ์‹œ๋„ํ–ˆ๊ณ  ๊ทธ๊ฒƒ์€ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์ •ํ™•ํžˆ ๋™์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ๋ชจ๋Š”
์•„์ฃผ ๋Š๋ฆฐ. ๋”ฐ๋ผ์„œ react-native-router-flux์— ํ•ด๋‹นํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. :)

ํ† ๋‹ˆ

๋ฅด ๋ฒค. 26์ผ 2016 ร  03:10, doddys [email protected] a รฉcrit :

์•ˆ๋…•ํ•˜์„ธ์š”,

์ €๋„ ๋Š๋ ค์ง€๋Š” ํ˜„์ƒ์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํฌ๋กฌ ๋””๋ฒ„๊น…์ด
ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค.
์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ(Android ๋ฐ iOS)์™€ ๋ฌผ๋ฆฌ์  ์žฅ์น˜์˜ ๋™์ž‘์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
ํฌ๋กฌ ๋””๋ฒ„๊น…์ด ๋น„ํ™œ์„ฑํ™” ๋œ ๊ฒฝ์šฐ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“  "@exponent/react-native-navigator"๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋ฌธ์ œ๋ฅผ ๊ฒฉ๋ฆฌํ•˜๋ ค๋ฉด?

๋„๋””

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/aksonov/react-native-router-flux/issues/199#issuecomment -189078772
.

์•ˆ๋…•ํ•˜์„ธ์š”,

๋งˆ์นจ๋‚ด ๋‚ด ์žฅ์น˜/์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ๋Š๋ฆฐ ์ด์œ ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด ์ž์‹ ์˜ ์‹ค์ˆ˜ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค.
๊ฐ์†๊ธฐ์—์„œ console.log(action)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋Š๋ฆฐ ์ผ์ด ๋งŽ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์žฅ์น˜์—์„œ ์‹คํ–‰ํ•  ๋•Œ. ํฌ๋กฌ ๋””๋ฒ„๊น…์ด ์ผœ์ ธ์žˆ์„ ๋•Œ ํ›จ์”ฌ ๋” ๊ฐ•๋ ฅํ•œ ํฌ๋กฌ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค (๋…ธํŠธ๋ถ vs ์žฅ์น˜).

๋ชจ๋“  ๋กœ๊ทธ(์•ก์…˜)๋ฅผ ์ œ๊ฑฐํ•œ ํ›„ ์ง€๊ธˆ์ด ํ›จ์”ฌ ์ข‹์Šต๋‹ˆ๋‹ค.

๋„๋””

@doddys ๋Š” ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘

@doddys ๋‚ด ๋กœ๊ฑฐ ๋ฏธ๋“ค์›จ์–ด์—์„œ console.log๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‹ซ์„ ๊ฒƒ์ด๋‹ค. ๋‚˜์ค‘์— ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก redux ๋ฏธ๋“ค์›จ์–ด์ด๋“  ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋””๋ฒ„๊ทธ์ด๋“  ์ฝ”๋“œ ์–ด๋””์—๋„ console.log๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”.
๋‚˜๋Š” ์ด๊ฒƒ์„ ๊ฒฝํ—˜ํ•˜๊ณ  ์žˆ๋‹ค. ๋‚˜๋Š” ํ”„๋กœ์ ํŠธ ์ „์ฒด์—์„œ console.log์— ๋Œ€ํ•œ ๋ชจ๋“  ํ˜ธ์ถœ์„ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๊ณ , ๊ฐœ๋ฐœ ๋ชจ๋“œ๋ฅผ ๋„๊ณ , ํฌ๋กฌ ๋””๋ฒ„๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ๋ฆด๋ฆฌ์Šค APK๋ฅผ ๋นŒ๋“œํ•˜๊ณ  react-native-router-flux ๋ฐ๋ชจ๋ฅผ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ... ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ์ง€์†๋ฉ๋‹ˆ๋‹ค.
์ „ํ™˜์€ ์ž ์‹œ ๋™์•ˆ ๊ดœ์ฐฎ์•„ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์•ž๋’ค๋กœ ์ด๋™ํ•˜์—ฌ ๋‚ด๋น„๊ฒŒ์ดํ„ฐ์— ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ์ฃผ๋ฉด ์•ฑ์ด ๊ฒฐ๊ตญ ๋Š๋ ค์ง€๊ณ  ๋•Œ๋กœ๋Š” ์ •์ง€๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” ๊ด€๋ จ react-native ๋ฌธ์ œ https://github.com/facebook/react-native/issues/3049#issuecomment -143505930์— ๋Œ€ํ•œ ์˜๊ฒฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
Android ์„ฑ๋Šฅ์— โ€‹โ€‹๋Œ€ํ•œ React Native ๊ณต์‹ ๋…ธํŠธ์—์„œ ์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๋„ ์–ธ๊ธ‰๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. https://facebook.github.io/react-native/docs/performance.html#slow -navigator-transitions
์–ด๋–ป๊ฒŒ ๋“  react-native-router-flux์— InteractionManager ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๊ทธ๋•Œ๊นŒ์ง€๋Š” Android ๊ธฐ๊ธฐ์—์„œ ๋ชจ๋“ˆ์„ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค. ์ •๋ง ์•ˆํƒ€๊นŒ์šด ์ผ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‹ค์ œ Android ์žฅ์น˜์™€ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ ์˜ค๋Š˜ ํ˜„์žฌ ์—…๋ฐ์ดํŠธ๋œ ์˜ˆ์ œ๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๋‹จ์ˆœํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
์ตœ์‹  react-native "react-native": "^0.25.1", ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด package.json ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋Š”๋ฐ ์ด์ œ ๊ฝค ์›ํ™œํ•˜๊ฒŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ Android ๊ธฐ๊ธฐ์—์„œ ์‹คํ–‰ํ•  ๋•Œ
USB์— ์—ฐ๊ฒฐํ•˜๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ช…๋ น์ค„์—์„œ.

$ react-native start
$ adb reverse tcp:8081 tcp:8081
$ react-native run-android

"JS ๊ฐœ๋ฐœ ๋ชจ๋“œ ๋„๊ธฐ

"JS Dev Mode"๋ฅผ ๋„ ๊ฑฐ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด
์žฅ์น˜์—์„œ ๊ณ ํ†ต์Šค๋Ÿฝ๊ฒŒ ๋Š๋ฆฌ๊ฒŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

"react-native run-android"๋ฅผ ์‹คํ–‰ํ•œ ํ›„ ์žฅ์น˜๋ฅผ "ํ”๋“ค์–ด์•ผ" ํ•ฉ๋‹ˆ๋‹ค.
๋ฉ”๋‰ด๋ฅผ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค. "๊ฐœ๋ฐœ์ž ์„ค์ •"์„ ์„ ํƒํ•œ ๋‹ค์Œ "JS ๊ฐœ๋ฐœ ๋ชจ๋“œ"๋ฅผ ์„ ํƒ ์ทจ์†Œํ•˜์‹ญ์‹œ์˜ค.

๊ทธ ํ›„์— "react-native run-android"๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ๋” ๋งŽ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์„ฑ๋Šฅ, ์ ์–ด๋„ ๋‚˜๋Š” ๋‹น์‹ ์„ ๋ฐ”๋ž๋‹ˆ๋‹ค :)

์œ„์˜ ์‚ฌํ•ญ์€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚ด Nexus 6์ด ์‹คํ–‰ ์†๋„๊ฐ€ ๋งค์šฐ ๋Š๋ ค ๋””๋ฒ„๊ทธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์•ˆ๋“œ๋กœ์ด๋“œ ๋ฒ„์ „์„ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ˆ„๊ฐ€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋ฌธ์ œ๋Š” ์˜ค๋žซ๋™์•ˆ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ...

๋„ฅ์„œ์Šค 5x์˜ ๊ฒฝ์šฐ๋„ ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

RN(https://github.com/facebook/react-native/pull/10289)์—์„œ NavigationExperimental์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” JS ์Šค๋ ˆ๋“œ์—์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์˜คํ”„๋กœ๋“œํ•˜๋Š” pull ์š”์ฒญ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ react-native-router-flux๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํŒŒ์ผ(์˜ˆ: NavigationAnimatedView๊ฐ€ ์ด์ œ NavigationTransitioner์ž„)์ด ์žˆ๋Š” NavigationExperimental(react-native-navigation-experimental)์˜ ๋ถ„๊ธฐ๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์—…๋ฐ์ดํŠธํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@aksonov ๋Š” react-native-navigation-experimental์„ ํฌํฌ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ณ€๊ฒฝ ๋นˆ๋„๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ๋ถ„๊ธฐ๋œ ๋ณต์‚ฌ๋ณธ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ๋ชจํ˜ธํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์›๊ฒฉ ๋””๋ฒ„๊น…์ด ์ผœ์ง„ ์ƒํƒœ์—์„œ ๋„ฅ์„œ์Šค 5์—์„œ ๋งค์šฐ ๋Š๋ฆผ

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ๋Š” ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์žฅ์น˜์—์„œ ์›๊ฒฉ js ๋””๋ฒ„๊น…์ด ํ™œ์„ฑํ™”๋˜๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋งค์šฐ ์ง€์—ฐ๋ฉ๋‹ˆ๋‹ค(์ˆ˜ํ‰/์ˆ˜์ง์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜๋˜๋Š” ํ™”๋ฉด ๊ฐ„ ๋ผ์šฐํŒ…). ๋„ˆ๋ฌด ๋‚˜์˜๋‹ค, ๊ทธ๊ฒƒ์„ ๋งŽ์ด ์ผœ๊ณ  ๊บผ์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์œ„ํ‚ค ๋ ˆ๋‹ˆ 2

์ฐธ๊ณ ์šฉ:

๋ฉฐ์น  ์ „ ๋‚˜๋Š” "react-native run-android"๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋‚ด ์žฅ์น˜์— ์„ค์น˜ํ•  ๋•Œ ์•„๋ฌด๋Ÿฐ ์ด์œ  ์—†์ด ์™„๋ฃŒํ•˜๋Š” ๋ฐ ์•ฝ 15/20๋ถ„์ด ๊ฑธ๋ฆฐ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ). ๊ทธ๋ž˜์„œ ๊ณ ํ†ต์Šค๋Ÿฝ๊ฒŒ ์‹คํ–‰ํ•˜๊ณ  ์‹คํ–‰ํ•œ ํ›„ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณ€๊ฒฝํ•œ ํ›„ ๋‚ด ๋ฌธ์ œ๋Š” ๋‚ด๊ฐ€ ํ”„๋ก์‹œ ๋’ค์— ์žˆ๊ณ  gradle.properties ํŒŒ์ผ์— ๋‚ด ํ”„๋ก์‹œ ๊ตฌ์„ฑ์— ์ฃผ์„์„ ๋‹ฌ์•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ตฌ์„ฑ์˜ ์ฃผ์„์„ ์ œ๊ฑฐํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค์‹œ ๋” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ๋‹ค์‹œ ์–ธ๊ธ‰ํ•˜๋ฉด โ€‹โ€‹๋ชจ๋“  ๊ฒƒ์ด ๋‹ค์‹œ ๋Š๋ฆฌ๊ฒŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ๊ณ  ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์ด ์ž‘๋™ํ•˜๋Š” ๊ฒฝ์šฐ ์ด ์ค„์„ yout gradle.properties ํŒŒ์ผ์— ๋„ฃ์œผ์‹ญ์‹œ์˜ค(๋ฌผ๋ก  ํ”„๋ก์‹œ ๋’ค์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ).

systemProp.http.proxyHost=192.168.X.XX //put your server IP here
systemProp.http.proxyPort=8888 //put your server PORT here
systemProp.http.proxyUser=xxxxxxx //put your PROXY USER here
systemProp.http.proxyPassword=xxxxxxx //put your PROXY USER PASSWORD here

systemProp.https.proxyHost=192.168.X.XX //put your server IP here
systemProp.https.proxyPort=8888 //put your server PORT here
systemProp.https.proxyUser=xxxxxxx //put your PROXY USER here
systemProp.https.proxyPassword=xxxxxxx //put your PROXY USER PASSWORD here

์ด๊ฒƒ์ด ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋•๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„, ์ด๊ฒƒ์ด ๋‚˜์—๊ฒŒ ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค( dev=false ๋ฐ ์›๊ฒฉ js ๋””๋ฒ„๊น… ๋น„ํ™œ์„ฑํ™” ์ œ์™ธ)

๋ฌธ์ œ

๋ผ์šฐํ„ฐ ์ „ํ™˜ + Android + react-native-svg

ํ•ด๊ฒฐ์ฑ…

๋ถ„๋ช…ํžˆ Svg๋ฅผ ํ”ผํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜์ง€๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ „ํ™˜์ด ์ด๋ฃจ์–ด์งˆ ๋•Œ๊นŒ์ง€ ๋ Œ๋”๋ง์„ ์ง€์—ฐํ•˜์‹ญ์‹œ์˜ค. ์ด ๊ธฐ์ˆ ์˜ ๋ณ€ํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://facebook.github.io/react-native/docs/performance.html#slow -navigator-transitions

์ œ ๊ฒฝ์šฐ์—๋Š” svg ์ด๋ฏธ์ง€๊ฐ€ ๊ฝค ๋งŽ์ง€๋งŒ ๋‹คํ–‰ํžˆ ํ™”๋ฉด ํ•˜๋‹จ์— ๋ Œ๋”๋ง๋˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋ ค๋ฉด ์Šคํฌ๋กคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น svgs ๋ Œ๋”๋ง์„ ์ง€์—ฐํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์ณค์Šต๋‹ˆ๋‹ค(์ดˆ๊ธฐ์—๋Š” ์•ฝ 4์ดˆ, ์ดํ›„์—๋Š” ์•ฝ 1์ดˆ ๋ฏธ๋งŒ).

์ง€์—ฐ์€ ์ž์ฒด ๋ฐฉ์‹์œผ๋กœ ์ƒ๋‹นํžˆ ๊นŒ๋‹ค๋กญ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด HOC๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์š”์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค(TS์—์„œ ์ž‘์„ฑํ–ˆ์œผ๋ฉฐ ์œ ํ˜• ์ •๋ณด๋ฅผ ์ŠคํŠธ๋ผ์ดํ”„ํ•˜์—ฌ JS๊ฐ€ ๋˜์—ˆ์ง€๋งŒ ์‹œ๋„ํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค).

import React from 'react'
import { InteractionManager } from 'react-native';

const MAX_DELAY = 500;

export default function providePartialRender(Component) {
  return class PartialRenderProvider extends React.Component {
    // initialize state (same as inside the constructor, just syntax sugar)
    state = {
      partialRender: true,
    };

    componentDidMount() {
      const updatePartialRender = () => {
        this.setState(state => {
          state.partialRender = false
          return state;
        });
      }
      // workaround https://github.com/facebook/react-native/issues/8624
      let called = false;
      const timeout = setTimeout(() => { called = true; updatePartialRender() }, MAX_DELAY);
      InteractionManager.runAfterInteractions(() => {
        if (called) return;
        clearTimeout(timeout);
        updatePartialRender();
      });
    }

    render() {
      const props = Object.assign(
        {},
        this.props,
        { partialRender: this.state.partialRender }
      );

      return <Component {...props}/>
    }
  }
}

๊ทธ๋ž˜์„œ ์ง€๊ธˆ,์ด HOC์œผ๋กœ ๊ฐ•ํ™”ํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ƒˆ๋กœ์šด ์†Œํ’ˆ๋ผ๋Š” ๊ฒƒ์ด๋‹ค partialRender ๊ตฌ์„ฑ ์š”์†Œ์˜ lighweight ๋ฒ„์ „ (๋ Œ๋”๋งํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๋งํ•ด ์ค„ ๊ฒƒ์ด๋‹ค partialRender = true ) ๋˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด ( partialRender = false ).

์ „ํ™˜์— ๊ธฐ๋ณธ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์‚ฌ์šฉํ•˜๋Š” Facebook์˜ ์ƒˆ๋กœ์šด "๊ณต์‹" ๋‚ด๋น„๊ฒŒ์ดํ„ฐ๋Š” https://reactnavigation.org/ ๋ฅผ ์ฐธ์กฐ

@Jickelsen ์–ผ๋งˆ๋‚˜ ๊ณต์‹์ ์ž…๋‹ˆ๊นŒ?

@adambene์€ ํ˜‘๋ ฅ์ž ๋ชฉ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Chrome ๋””๋ฒ„๊ฑฐ๋ฅผ ๋„๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค. :)

@doddys ๋‹น์‹ ์€ ํ›Œ๋ฅญํ•œ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค! ๊ทธ๊ฑฐ ์•Œ์•„?

@doddys ๊ณ ๋งˆ์›Œ์š”, ๋‹น์‹ ์€ ํ•˜๋ฃจ๋ฅผ ๊ตฌํ–ˆ์Šต๋‹ˆ๋‹ค!

ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€

"๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ๋ผ์šฐํ„ฐ ํ”Œ๋Ÿญ์Šค": "4.0.6",

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