์๋ ํ์ธ์,
์ด์ ์ํ์์ ๋ค๋ก ๋ฒํผ์ ํด๋ฆญํ ํ ์ฅ๋ฉด์ ๊ฐ์ ๋ก ๋ค์ ๋ ๋๋งํ ์ ์์ต๋๊น?
๊ณ ๋ง์
๊ทํ์ ๋ต๋ณ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ ์๋ํ์ง ์์ต๋๋ค ;)
์ด์ ๋ณด๊ธฐ๋ฅผ ์๋ก ๊ณ ์น์ง ์์ต๋๋ค ...
์ํ ๋ด์์ ๋ฌด์ธ๊ฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์๋ก ๊ณ ์ณ์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ์๋ก ๊ณ ์นจ ๋ด์์ ์์์ ๊ฐ์ ์ค์ ํ์ญ์์ค.
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();
์ฌ์ฉ์ ์ ์ํ ๊ฒ์ ๋ณด๋ ๋ ๊ฐ์ง ์ง๋ฌธ์ด ์์ต๋๋ค.
Actions.refresh()
ํธ์ถํ๋ฉด Scene C ๋๋ B๊ฐ ๋ค์ ๋ ๋๋ง๋ฉ๋๊น?onPress
ํธ๋ค๋ฌ๋ฅผ ์ฌ์ ์ํ ์ ์์ต๋๊น? ์ฝ๋๋ฅผ ๋ณด๋ฉด ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ง ์์ต๋๋ค.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'});
์ด๊ฒ์ ์๋ํ๊ณ ๋ณด๊ธฐ๋ฅผ ์
๋ฐ์ดํธํ์ง๋ง ๋ค์ ์ค์ ํ๋ฉด์ผ๋ก ์ด๋ํ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ง์ฐ ํ ์ํ์ผ๋ก ๋น ์๋ก ๊ณ ์นจ์ ํธ์ถํ์ฌ ๋ง์นจ๋ด ํด๊ฒฐํ ์ ์์ต๋๊น?
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});
๊ฐ์ฌ ํด์.
}
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ง์ฐ ํ ์ํ์ผ๋ก ๋น ์๋ก ๊ณ ์นจ์ ํธ์ถํ์ฌ ๋ง์นจ๋ด ํด๊ฒฐํ ์ ์์ต๋๊น?
Actions.popTo('ํ์ด์ง์');
setTimeout(() => {
Actions.refresh({์ด๋ฆ:'zzzzar'});
console.log("zzzz");
}, 10);