React-native-router-flux: ํŒ ํ›„ ๊ฐ•์ œ ์žฌ๋ Œ๋”๋ง ์žฅ๋ฉด

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

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

์ด์ „ ์ƒํƒœ์—์„œ ๋’ค๋กœ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ํ›„ ์žฅ๋ฉด์„ ๊ฐ•์ œ๋กœ ๋‹ค์‹œ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ณ ๋งˆ์›Œ

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

์ง€์—ฐ ํ›„ ์†Œํ’ˆ์œผ๋กœ ๋นˆ ์ƒˆ๋กœ ๊ณ ์นจ์„ ํ˜ธ์ถœํ•˜์—ฌ ๋งˆ์นจ๋‚ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
Actions.popTo('ํŽ˜์ด์ง€์›');
setTimeout(() => {
Actions.refresh({์ด๋ฆ„:'zzzzar'});
console.log("zzzz");
}, 10);

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

๊ท€ํ•˜์˜ ๋‹ต๋ณ€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ;)
์ด์ „๋ณด๊ธฐ๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ...

์ƒํƒœ ๋‚ด์—์„œ ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ƒˆ๋กœ ๊ณ ์ณ์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒˆ๋กœ ๊ณ ์นจ ๋‚ด์—์„œ ์ž„์˜์˜ ๊ฐ’์„ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.

2016๋…„ 4์›” 9์ผ 09:51์— rtrompier [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ๋‹ต๋ณ€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ;)
์ด์ „๋ณด๊ธฐ๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ...

โ€”
์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub https://github.com/aksonov/react-native-router-flux/issues/465#issuecomment -207737400์—์„œ

์•„๋ฌด๋„ Actions.pop() ํ›„์— ์ƒˆ๋กœ ๊ณ ์นจํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ƒˆ๋กœ ๊ณ ์น˜๋ ค๋ฉด ์ด์ „ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. NavigationExperimental API๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

@aksonov @helloworld123456 ๋ฐ @rtrompier ์™€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํƒ์ƒ‰ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์žฅ๋ฉด A => ์žฅ๋ฉด B => ์žฅ๋ฉด C

C์—์„œ B๋กœ ํŒํ•  ๋•Œ Scene B๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Actions.pop(); Actions.refresh(); ์‚ฌ์šฉ์„ ์ œ์•ˆํ•œ ๊ฒƒ์„ ๋ณด๋‹ˆ ๋‘ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Actions.refresh() ํ˜ธ์ถœํ•˜๋ฉด Scene C ๋˜๋Š” B๊ฐ€ ๋‹ค์‹œ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๊นŒ?
  2. ํƒ์ƒ‰ ๋ชจ์Œ์—์„œ ๋’ค๋กœ ๋ฒ„ํŠผ์˜ onPress ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ๊ฐ€๋Šฅํ•œ ๊ฒƒ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  1. B๋ฅผ ์ƒˆ๋กœ ๊ณ ์ณ์•ผ ํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์•Œ์•„๋‚ด์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ!
  2. renderBackButton ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‹ ์˜ ๋’ค๋กœ ๋ฒ„ํŠผ, ์‚ฌ์šฉ์ž ์ •์˜ onPress ๋“ฑ์„ ์ „๋‹ฌํ•˜์‹ญ์‹œ์˜ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค - ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @cridenour

@samdturner ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

@alfan2305

Actions.pop();
Actions.refresh();

navBar ๋‚ด์—์„œ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๊ฐ€ ์•ˆ๋˜๋Š” refresh=true ์˜จ Scene . ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด onPress ์— ๋Œ€ํ•œ backButton ๋ฅผ ์œ„์˜ ๋‘ ํ˜ธ์ถœ์„ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๋กœ ์žฌ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@ssomnoremac ๋ฒ„ํŠผ์„ ์žฌ์ •์˜ํ•˜๋Š”

@cridenour ๊ฒฝ๋กœ ๋ณ€๊ฒฝ ์‹œ ์žฅ๋ฉด์„ ๋‹ค์‹œ ๋ Œ๋”๋งํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ–๋Š” ๊ฒƒ์€ ์ด ์งˆ๋ฌธ์˜ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด์„ ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ๋“ฑ๋ก ์‹œํ€€์Šค์—์„œ ๋Œ์•„๊ฐ€์„œ ์žฌ์„ค์ •์„ ๋’ค๋กœ ๋ฒ„ํŠผ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋Œ€์‹  ๋‹ค์‹œ ๋ Œ๋”๋งํ•  ๋•Œ ์ž‘์—…์„ ์‹คํ–‰ํ•˜์—ฌ Redux ์Šคํ† ์–ด์—์„œ ๋“ฑ๋ก ์ƒํƒœ๋ฅผ ์žฌ์„ค์ •ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ท€ํ•˜์˜ ๋“ฑ๋ก ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ redux๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ˆ˜์‹ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋งจ ์œ„์— ์žˆ์„ ๋•Œ ์ƒˆ ์†Œํ’ˆ์„ ๋ฐ›์€ ํ›„ ์žฅ๋ฉด์ด ๋‹ค์‹œ ๋ Œ๋”๋ง๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

๋‚ด ๋ง์€ onBack ํ•˜๋ฏ€๋กœ ๋“ฑ๋ก ์žฅ๋ฉด์„ ์ •์˜ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ„๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

const refreshOnBack = () => { Actions.pop(); Actions.refresh(); }

...
<Scene key="registration" component={Registration} onBack={refreshOnBack} />
...

๋•๋ถ„์— ๋Œ€ํ•ด ์•Œ๊ณ ํ•˜์ง€ ์•Š์•˜๋‹ค onBack ๋‚˜๋Š” ์‚ฌ์šฉ์œผ๋กœ detailedExample๋ฅผ ๋‚ด ๋ฌธ์„œ๋กœ.

๊ดœ์ฐฎ์•„์š”. https://github.com/aksonov/react-native-router-flux/blob/master/docs/API_CONFIGURATION.md๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”. "์˜คํ”„๋ถ"์œผ๋กœ ๊ฐˆ ๋•Œ ๋งŽ์€ ์œ ์—ฐ์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. :)

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,
์šฐ์„  : ๋ฐ˜์‘ ๋ฐ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋”ฉ์˜ ์ดˆ๋ณด์ž์ด๋ฏ€๋กœ ํ†ต์ฐฐ๋ ฅ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ @cridenour์—์„œ "refreshOnBack" ์†”๋ฃจ์…˜์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค . ๋ถˆํ–‰ํžˆ๋„ ๋ช‡ ๊ฐ€์ง€ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋ฒ„ํŠผ์€ ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฒ„ํŠผ ์ž์ฒด๊ฐ€ ๊ฐ•์กฐ ํ‘œ์‹œ๋˜๋”๋ผ๋„ "C" ์žฅ๋ฉด( @ssomnoremac ์˜ˆ์ œ ์ฐธ์กฐ)์—
const refreshOnBack = () => { Actions.pop(); }
๋ถ€๋ชจ ๋ณด๊ธฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๊ณ  ์˜ˆ์ƒํ•œ ๋™์ž‘์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ฌด์—‡์„ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? :/

@Brokray ์™€ ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€

์›๊ฒฉ์œผ๋กœ ๋””๋ฒ„๊ทธํ•˜๋ฉด ์ฝ˜์†”์— ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๊นŒ?

@cridenour ์ฝ˜์†”์— ์˜ค๋ฅ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ์ฝ˜์†”์— ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์†๊ธฐ์—์„œ ๋ญ”๊ฐ€?
๊ฐ์†๊ธฐ๋Š” ์—ฌ์ „ํžˆ ๋‚˜์—๊ฒŒ ์•ฝ๊ฐ„์˜ ๋ฏธ์Šคํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”.

ํ ! ์ƒˆ๋กœ ๊ณ ์นจ์„ ๋จผ์ € ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค.

Actions.refresh({key: 'yourSceneKey'}); Actions.pop();

๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @cridenour : ๋ฐฉ๊ธˆ ๊ท€ํ•˜์˜ ์•„์ด๋””์–ด๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋ถˆํ–‰ํžˆ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋ฌด ๋ฌธ์ œ ์—†์ด C์—์„œ B๋กœ ์ด๋™ํ–ˆ์ง€๋งŒ "B"๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
refresh() ๋ฉ”์„œ๋“œ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 'B' ์žฅ๋ฉด์— ์ƒˆ๋กœ ๊ณ ์นจ ๋ฒ„ํŠผ์„ ๋†“์•„๋„( Actions.refresh() ํ˜ธ์ถœ) ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@jholton ๋„์›€์ด ๋ ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋‚ด ์žฅ๋ฉด์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.
๊ฐ ์žฅ๋ฉด(B & C)์— ๋Œ€ํ•œ ๊ฐ์†๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 'C'์—์„œ POST ์•ก์…˜์„ ํ˜ธ์ถœํ•˜๋ฉด ๋‘ ๊ฐ์†๊ธฐ ๋ชจ๋‘ ํ˜ธ์ถœ์„ ๋ฐ›๊ณ  C๋Š” ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  B๋Š” ์ƒํƒœ ๋ณ€์ˆ˜ '๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ'๋ฅผ true .
์ด๋Ÿฐ ์‹์œผ๋กœ B์˜ "ComponentWillReceiveProps"์—์„œ '์—…๋ฐ์ดํŠธ'๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žฅ๋ฉด์„ ์ƒˆ๋กœ ๊ณ ์น˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ์„ ๋‹ค์‹œ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ Actions.refresh() ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ํ†ต์ฐฐ๋ ฅ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๋ฉด ์ฃผ์ €ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค!
๊ฐ์‚ฌ ํ•ด์š”.

@Brokray ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์€

@Brokray ๋„ˆ๋ฌด ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์˜ˆ๋ฅผ ๋“ค์–ด์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”? ๋‹จ์ผ ์žฅ๋ฉด์— ๋Œ€ํ•œ ๊ฐ์†๊ธฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋ชจ๋“  ๋ฌธ์„œ๋ฅผ ์ฝ์—ˆ์ง€๋งŒ, ์ด ์‹œ์ ์—์„œ ๋‚ด ๋จธ๋ฆฌ๋ฅผ ์•ฝ๊ฐ„ ๋„˜์–ด์„ฐ์Šต๋‹ˆ๋‹ค.

@cridenour ์˜ˆ, ์•ฑ ์ƒํƒœ ์ž์ฒด๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์žฅ๋ฉด B๊ฐ€ ๋‹ค์‹œ ๋ Œ๋”๋ง๋˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
์žฅ๋ฉด B์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ณ„๋กœ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์žฅ๋ฉด C์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์–‘์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์žฅ๋ฉด B๋กœ ๋˜๋Œ์•„๊ฐˆ ๋•Œ ๋ชจ๋“  ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ(์˜ˆ: getInitialState, componentWillMount ๋“ฑ)๊ฐ€ ์‹คํ–‰๋˜์–ด ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฒ€์ƒ‰๋˜๊ณ  ํ‘œ์‹œ๋˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@jholton ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค. ์ข‹๋“  ๋‚˜์˜๋“  React์˜ ์„ค๊ณ„์— ์˜ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”Œ๋Ÿญ์Šค ๊ตฌํ˜„(๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด redux์™€ ๊ฐœ์ธ์ ์œผ๋กœ Alt๋ฅผ ์‚ฌ์šฉํ•จ)์„ ์‹œ๋„ํ•˜๊ณ  ๊ทธ๊ณณ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋‹ค์‹œ ๋ Œ๋”๋ง๋˜๊ณ ( render() ๋‹ค์‹œ ์‹คํ–‰) ๊ตฌ์„ฑ ์š”์†Œ ์ดˆ๊ธฐํ™”์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. React์˜ ๋งŽ์€ ๋ฐ˜์‘ ๋ฌธ์ œ๋Š” ๋ฐ์ดํ„ฐ ๊ณ„์ธต์„ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋ฉ€๋ฆฌ ์˜ฎ๊ธฐ๋ฉด ํ›จ์”ฌ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ํ‘œ์‹œํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋จ).

์ฆ‰, Actions.refresh()๋Š” ์ƒˆ ์†Œํ’ˆ๊ณผ ๋‹ค์‹œ ๋ Œ๋”๋ง(๋‹ค์‹œ render() )๋งŒ ๋ฐœ์ƒํ•˜์ง€๋งŒ componentWillMount ๋“ฑ์€ ํ˜ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@jholton ๊ธ€์Ž„์š”, @cridenour๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์•ก์…˜, ์ƒํƒœ ๋ฐ ๋ฆฌ๋“€์„œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋Ÿญ์Šค ๊ตฌํ˜„(์‹ค์ œ๋กœ redux)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿญ์Šค ๊ตฌํ˜„์— ์ต์ˆ™ํ•ด์ง€๋ฉด ๊ธฐ๊บผ์ด ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!
@cridenour ๋„์™€ ์ฃผ์…”์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

@Brokray ์˜ˆ, ์ง€๊ธˆ Redux ์ž์Šต์„œ์— ๋›ฐ์–ด๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿญ์Šค/๋ฆฌ๋•์Šค๋ฅผ ๋ณด๋‹ค ์ง€๋Šฅ์ ์œผ๋กœ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”.

์—…๋ฐ์ดํŠธ ๋œ ์†Œํ’ˆ์—์„œ ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค์Œ๋ณด๊ธฐ๋กœ ๋‹ค์‹œ ์ด๋™ํ•˜๋ ค๊ณ ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์ด ์ฝ”๋“œ๋Š” ๋‚ด ์„ค์ • ํ™”๋ฉด์— ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์•ก์…˜.ํŒ();
Actions.refresh({ํ‚ค: 'ํŽ˜์ด์ง€์›', ์ด๋ฆ„:'wwwww'});

์ด๊ฒƒ์€ ์ž‘๋™ํ•˜๊ณ  ๋ณด๊ธฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€๋งŒ ๋‹ค์‹œ ์„ค์ • ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
screen shot 2016-08-02 at 4 43 38 pm

์ง€์—ฐ ํ›„ ์†Œํ’ˆ์œผ๋กœ ๋นˆ ์ƒˆ๋กœ ๊ณ ์นจ์„ ํ˜ธ์ถœํ•˜์—ฌ ๋งˆ์นจ๋‚ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
Actions.popTo('ํŽ˜์ด์ง€์›');
setTimeout(() => {
Actions.refresh({์ด๋ฆ„:'zzzzar'});
console.log("zzzz");
}, 10);

@washaq : ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ํŠธ๋ฆญ์„ํ–ˆ์Šต๋‹ˆ๋‹ค

@ronyv89 ๋‹คํ–‰์ด๊ตฐ์š”. ๋„์›€์ด ๋  ์‚ฌ๋žŒ์ด ์žˆ๋‚˜์š”? " https://github.com/facebook/react-native/issues/9280 "

์•ก์…˜.ํŒ(); Actions.refresh();
ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์ด์ „ ์žฅ๋ฉด์œผ๋กœ ์ด๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Action ๋ฉ”์„œ๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ฝ์†ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•จ๊ป˜ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Actions.pop().then(Actions.refresh()).

๋˜๋Š”

Actions.pop().refresh()

@israrrhnrtech ๋ฐ @tuneZola ์ด์ „์˜ ์ƒˆ๋กœ ๊ณ ์นจ์„ ํ˜ธ์ถœํ•˜๋ ค๋ฉด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ง€์—ฐ ํ›„์— ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ œ๋Œ€๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

Actions.pop();
setTimeout(() => {
Actions.refresh({name:'zzzzar'});
console.log("zzzz");
}, 10);

์šฐ์„  @tuneZola ์™€ @washaq์— ๋‹ต์žฅ์„ ๋ณด๋‚ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
์•ก์…˜('ํŽ˜์ด์ง€์›');
setTimeout(() => {
Actions.refresh({์ด๋ฆ„:'zzzzar'});
console.log("zzzz");
}, 10);

์ด ์ฝ”๋“œ๋Š” ๋งค์šฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์‹œํ•œ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค..

@israrrhnrtech ๋ฌธ์ œ

๋‚ด ์žฅ๋ฉด์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

A => B

BI์—์„œ ๋‚ด redux ์ €์žฅ์†Œ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€๋งŒ Router.pop() ํ•˜๋ฉด componentWillReceiveProps๊ฐ€ A์—์„œ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด router.pop์€ B ํŽ˜์ด์ง€ ๋‚ด๋ถ€์— ๋กœ์ปฌ๋กœ ์กด์žฌํ•˜๋ฏ€๋กœ(๊ธฐ๋ณธ navBar๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ)

Router.pop()
Router.refresh()

์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ์„ค์ •ํ•ด๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ณ€๊ฒฝํ•˜๋ ค๋Š” ์†Œํ’ˆ์„ ์ „๋‹ฌํ•  ๋•Œ๋งŒ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

Actions.pop();
setTimeout(() => {
Actions.refresh({name:'zzzzar'});
console.log("zzzz");
}, 10);

์—ฌ๊ธฐ์„œ ๋‚˜๋Š” ๋‚ด ๋ฉ”์ธ ๋ณด๊ธฐ์—์„œ ์ด๋ฆ„์„ ์†Œํ’ˆ์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ…์ŠคํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด this.props.name ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ๋œ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธ๋œ ์ƒํƒœ๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‚˜๋ฅผ ์œ„ํ•ด ์ด๊ฒƒ์„ ์ ์šฉํ•˜๋ฉด :
navigator.replacePreviousAndPop(์ด์ „ ๊ฒฝ๋กœ);

@phpscrpt , ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ผ๋ถ€ ์ฝ”๋“œ๋กœ ๋” ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@israrnrtech ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. react-native์— ๋‚ด์žฅ๋œ Navigator ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. react-native-router-flux๊ฐ€ Navigator ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ์ƒ์†๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋“  ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@washaq ์•„๋ž˜์— ๊ตฌํ˜„๋œ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์†”๋ฃจ์…˜์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

backAndRefresh(){

์•ก์…˜.ํŒ();
setTimeout(() => {
Actions.refresh({์ด๋ฆ„:'zzzzar'});
console.log("zzzz");
}, 10);

}

๋Œ์•„๊ฐ€์„œ ์ƒˆ๋กœ๊ณ ์นจ

์ƒˆ๋กœ ๊ณ ์นจํ•˜๋ ค๋Š” ํŽ˜์ด์ง€์˜ componentDidMount๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”!

@ivansifrim ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ?
์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ํ™”๋ฉด์— ์ฐฉ์ง€ํ•œ ํ›„ ์ž‘์—…์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. Actions.pop({ refresh: {} });
ํ˜„์žฌ ํ™”๋ฉด์„ ๋„์šฐ๊ณ  ์ƒ์œ„ ํ™”๋ฉด์„ ์ƒˆ๋กœ ๊ณ ์นฉ๋‹ˆ๋‹ค.

@JeroenNelen - ์•„์ง ํ•ด๋ณด์ง€ ์•Š์•˜์ง€๋งŒ @Bertjuhh๊ฐ€ ์ œ์•ˆํ•œ ๋Œ€๋กœ ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์–ธ๊ธ‰๋œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

const refreshOnBack = () => { Actions.pop({ refresh: {} }); }
...
// child scene
<Scene key="settings" component={SettingsScreen} onBack={refreshOnBack}/>
...

์ตœ๊ทผ์— ์ˆ˜ํ–‰ํ•œ ๊ฐ„๋‹จํ•œ ์•ฑ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค(์ด ์ฝ”๋“œ๋Š” ๋‚ด๋ณด๋‚ด๊ธฐ ์œ„์˜ ๋ผ์šฐํ„ฐ ํŒŒ์ผ์— ์žˆ์Œ).

Actions.pop = () => Actions.NAME_OF_PREVIOUS({ type: ActionConst.RESET });

pop ๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜์—์„œ ๋ช‡ ๊ฐ€์ง€ ์กฐ๊ฑด๋ถ€ ๋…ผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ์•„๋ฆ„๋‹ต๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค ( ActionConst.RESET ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ๋Œ€์ฒด ๋ฐฑ ์ „ํ™˜์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ๋น ๋ฅด๊ณ  ๋ถˆ์พŒํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์นจ๋‚ด ์—ฌ๊ธฐ์— ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์œ„์˜ ์ œ์•ˆ ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ...

+1

@ivansifirm ๋งˆ์ง€๋ง‰์œผ๋กœ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ๊ณ ์นจํ•  ๋•Œ ์‚ฌ์šฉํ•œ ๊ฒƒ์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, '์ด๋ฆ„' ์œ„์˜ ๋‚ ์งœ๋ฅผ ์ทจ์†Œํ•˜๋ ค๋Š” ์†Œํ’ˆ์€ ์ด์ „ ๋ณด๊ธฐ์—์„œ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋Š” ์†Œํ’ˆ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋งค์šฐ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.
๋•Œ๋กœ๋Š” ์ž‘๋™ํ•˜๊ณ  ๋•Œ๋กœ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ๋‚ด ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (๋‚ด ๊ฒฝ์šฐ์—๋Š” A์”ฌ๊ณผ B์”ฌ์ด ์žˆ๊ณ , A=>B๋Š” ๋„ค๋น„๊ฒŒ์ด์…˜, B=>A๋Š” ํŒํ•‘์œผ๋กœ)

์žฅ๋ฉด A:
componentWillReceiveProps(nextProps) { if (this.props.test !== nextProps.test) { this._getUser() // I need call this func after pop } }
์žฅ๋ฉด B

NavigationActions.pop({refresh:{test:true}})

๋‚˜์—๊ฒŒ ๋ญ๊ฐ€ ๋ฌธ์ œ ๋‹ˆ ?
๊ฐ์‚ฌ ํ•ด์š”.

NavigationActions.pop({์ƒˆ๋กœ๊ณ ์นจ:{ํ…Œ์ŠคํŠธ:์ฐธ}})

๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

NavigationActions.pop({์ƒˆ๋กœ๊ณ ์นจ:{ํ…Œ์ŠคํŠธ:!ํ…Œ์ŠคํŠธ}})

2017๋…„ 6์›” 20์ผ ํ™”์š”์ผ ์˜คํ›„ 7์‹œ 29๋ถ„, MobileStar [email protected]
์ผ๋‹ค:

์—ฌ๊ธฐ์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋งค์šฐ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.
๋•Œ๋กœ๋Š” ์ž‘๋™ํ•˜๊ณ  ๋•Œ๋กœ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ๋‚ด ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (๋‚˜์˜ ๊ฒฝ์šฐ ์”ฌ A์™€ B๊ฐ€ ์žˆ๊ณ , A=>B๋ฅผ ํƒ์ƒ‰ํ•˜์—ฌ,
B=>A ํŒํ•‘)

์žฅ๋ฉด A:

componentWillReceiveProps(nextProps) {
if (this.props.test !== nextProps.test) {
this._getUser() // ํŒ ํ›„์— ์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
}
}

์žฅ๋ฉด B

NavigationActions.pop({์ƒˆ๋กœ๊ณ ์นจ:{ํ…Œ์ŠคํŠธ:์ฐธ}})

๋‚˜์—๊ฒŒ ๋ญ๊ฐ€ ๋ฌธ์ œ ๋‹ˆ ?
๊ฐ์‚ฌ ํ•ด์š”.

โ€”
์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/aksonov/react-native-router-flux/issues/465#issuecomment-309945049 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AExqB3CZM4U1yuwKslfuBj88uVVJulGtks5sGIAbgaJpZM4H_0pN
.

@nikitph ๋„์™€์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋„ค, ์‹œ๋„ํ•ด ๋ดค์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ componentWillReceiveProps๋Š” ํŒ์—… ํ›„์— ํ•ญ์ƒ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
componentWillReceiveProps๊ฐ€ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ pop ํ›„์— ๋‹ค๋ฅธ ์ˆ˜๋ช… ์ฃผ๊ธฐ func๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์•Œ๋ ค์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋ฌธ์•ˆ ์ธ์‚ฌ.

@SelfnessAid ์•„, ์ด์ œ ๋‚ด๊ฐ€ ์ด ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ํฌ๊ธฐํ•œ ์ด์œ ๋ฅผ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. "ํ•˜์ง€๋งŒ componentWillReceiveProps๊ฐ€ ํŒ์—… ํ›„์— ํ•ญ์ƒ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค." ๋Œ€์ƒ ํŽ˜์ด์ง€์— ์žˆ๋Š” ์Šค์™€์ดํ”„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด๊ธฐ์˜ ์ธ๋ฑ์Šค๊ฐ€ ์ƒˆ๋กœ ๊ณ ์นจ์„ ๊ตฌ๋™ํ•˜๋„๋ก ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ์งœ์ฆ๋‚˜์ง€๋งŒ ๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ญ”๊ฐ€๋ฅผ ์•Œ์•„ ๋ƒˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ „ํ˜€ ๊นจ๋—ํ•˜๋‹ค๊ณ  โ€‹โ€‹์ƒ๊ฐํ•˜์ง€ ์•Š์ง€๋งŒ ๋‚˜๋ฅผ ์œ„ํ•ด ๊ทธ๊ฒƒ์€ ์ผ์„ํ•˜๋ฏ€๋กœ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. (๋‚˜๋Š” ์ด๊ฒƒ์„ ํ•˜๊ธฐ ์œ„ํ•ด Redux๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค)

Action.scene() ๋˜๋Š” Action.pop() ํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ€์ ธ์˜ค๊ธฐ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ ธ์˜ค๊ธฐ๋Š” ์ฒ˜์Œ์— componentWillMount ๋ฉ”์„œ๋“œ์—์„œ ํ˜ธ์ถœ๋˜์—ˆ์ง€๋งŒ Action.pop() ์‚ฌ์šฉํ•  ๋•Œ ํ˜ธ์ถœ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  Action.scene() ๋ฐ Action.pop() ํ˜ธ์ถœ์„ 2๊ฐœ์˜ ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‰์†Œ๋ณด๋‹ค ๋” ๋งŽ์€ redux ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์Œ์„ ์˜๋ฏธํ•˜์ง€๋งŒ eh :/. ์—ฌ๊ธฐ ๊ทธ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค:

const goTo = (scene, label, sceneParams = {}, pushed = true) => ( // Equivalent of `Action.scene()`
   (dispatch) => {
     dispatch(setAppLabel(scene, label, sceneParams, pushed)); // I'm storing some infos about the scene in my store. Will be used in custom `pop()` later.
     mapSceneToAction(scene, dispatch, sceneParams); // // Calls the function initially used in the componentWillMount. I'll show a sample further
     Actions[scene](sceneParams);
   }
);

const pop = () => (  // Equivalent of `Action.pop()`
   (dispatch, getState) => {
     Actions.pop();
     mapSceneToAction(getState().sceneReducer.previousScene, dispatch, getState().sceneReducer.previousScene.itemProps); // Retrieving some infos stored in the store during `goTo()`
   }
);

mapSceneToAction()์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

const mapSceneToAction = (scene, dispatch, itemProps) => {
  switch (scene) {
    case 'events':
      dispatch(fetchEvents()); // Or any other action :P
      break;
    case 'anyScene':
      dispatch(anyAction(withAnyParams));
      break;
    default:
  }
};

์•ฝ๊ฐ„ ๊นŒ๋‹ค๋กญ๊ณ  ๋ฌด๊ฒ๊ณ  ๊นจ๋—ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ์†Œํ’ˆ์„ ๋‹ค์Œ ์žฅ๋ฉด์œผ๋กœ ์ „๋‹ฌ..
Actions.YourRoute({ onPress: () => setState.. });

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ ์žฅ๋ฉด์—์„œ prop ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
this.props.onPress();

@bethuel11 ์ด๊ฒƒ์€ ๋ฃจํ”„์—์„œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์€ ์•„๋‹ˆ์ง€๋งŒ

๊ฐ„๋‹จํ•œ ํŠธ๋ฆญ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค ...

ํ˜„์žฌ ์ƒํƒœ / ํ˜„์žฌ ํŽ˜์ด์ง€ =>

์•ก์…˜.ํŒ();
setTimeout(() => {
Actions.refresh({
isRefresh: ์‚ฌ์‹ค,
});
}, 0);

์ด์ „ ์ƒํƒœ / ํŽ˜์ด์ง€ => ๋ Œ๋”๋ง ๋‚ด๋ถ€์— ์•„๋ž˜ ์กฐ๊ฑด ์ถ”๊ฐ€,

if(this.props.isRefresh){
Actions.refresh({
isRefresh: ๊ฑฐ์ง“,
});
//์—ฌ๊ธฐ์„œ set state๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋‹ค์‹œ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค...
this.setState({isloading:true});

๊ฐ์‚ฌ ํ•ด์š”.
}

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