ããã
åã®ç¶æ ã§[æ»ã]ãã¿ã³ãã¯ãªãã¯ããåŸãã·ãŒã³ã匷å¶çã«åã¬ã³ââããªã³ã°ããããšã¯ã§ããŸããïŒ
THX
ããªãã®çããããããšããããããããŸããããŸãã;ïŒ
åã®ãã¥ãŒã¯æŽæ°ãããŸãã...
ãã®ç¶æ ã®äžã§äœããå€ãã£ãããããããªãã¬ãã·ã¥ããã¹ãã ãšæããŸãã ãããã£ãŠãæŽæ°å ã§ã©ã³ãã ãªå€ãèšå®ããŸã
2016幎4æ9æ¥ã«ã¯ã9æ51åã§ãrtrompier [email protected]æžããŸããïŒ
ããªãã®çããããããšããããããããŸããããŸãã;ïŒ
åã®ãã¥ãŒã¯æŽæ°ãããŸãã...â
ãã®ã¹ã¬ããã«ãµãã¹ã¯ã©ã€ãããŠããããããããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ããhttps://github.com/aksonov/react-native-router-flux/issues/465#issuecomment -207737400
Actions.popïŒïŒã®åŸã«æŽæ°ããæ¹æ³ãæããŠããããŸããïŒ
ç¹°ãè¿ããŸãããæŽæ°ããã«ã¯åã®ã³ã³ããŒãã³ãã®ç¶æ ãå€æŽããå¿ èŠããããŸãã ãããNavigationExperimentalAPIã®ä»çµã¿ã§ãã
@aksonov @ helloworld123456ããã³@rtrompierãšåãåé¡ã
ã·ãŒã³A =>ã·ãŒã³B =>ã·ãŒã³C
CããBã«ããããããšããã·ãŒã³Bãåã¬ã³ããªã³ã°ããå¿
èŠããããŸãã @ Elyx0ãActions.pop(); Actions.refresh();
䜿çšãææ¡ããŠããããšãããããŸãã2ã€ã®è³ªåããããŸãã
Actions.refresh()
åŒã³åºããšãã·ãŒã³CãŸãã¯Bãåã¬ã³ââããªã³ã°ãããŸããïŒonPress
ãã³ãã©ãŒããªãŒããŒã©ã€ãããããšã¯å¯èœã§ããïŒ ã³ãŒããèŠãåŸããããå¯èœã§ããããã«ã¯èŠããŸãããrenderBackButton
ã䜿çšããŠãç¬èªã®æ»ããã¿ã³ãã«ã¹ã¿ã onPressãªã©ãæž¡ããŸããäºè§£ããŸãã- ãŸã
@samdturneræ¹æ³ãæããŠããã ããŸããïŒ
ããããšãããããŸãã
@ alfan2305
Actions.pop();
Actions.refresh();
navBar
å
ã¯ã©ãã§ããïŒ Scene
refresh=true
ãããã¹ãã§ã¯ãããŸããã ãã以å€ã®å Žåã¯ã backButton
ã®onPress
ããäžèšã®2ã€ã®åŒã³åºããåŒã³åºãé¢æ°ã«ãªãŒããŒã©ã€ãããå¿
èŠããããŸãã
@ssomnoremacãã¿ã³ããªãŒããŒã©ã€ãããããšã®äœãåé¡ã«ãªã£ãŠããŸããïŒ éåžžã«ç°¡åã§ãã ãã®åé¡ãããäžè¬çã ã£ãå Žåãæ©èœãè¿œå ãããšæããŸãããããã¯ãšããžã±ãŒã¹ã®ããã§ãã
@cridenourã«ãŒãå€æŽæã«ã·ãŒã³ãåã¬ã³ããªã³ã°ããæ©èœãæã€ããšã¯ããã®è³ªåã®ç¯å²ãè¶ ããŠãããšæããŸãã ç§ã®å Žåãç»é²ã·ãŒã±ã³ã¹ããæ»ã£ãŠããªã»ãããæ»ããã¿ã³ã«ããã¯ãã代ããã«ãåã¬ã³ããªã³ã°æã«ã¢ã¯ã·ã§ã³ãå®è¡ããŠãReduxã¹ãã¢ã§ç»é²ã®ç¶æ ããªã»ããããããšæããŸãã ãããéæããããã®ããè¯ãæ¹æ³ã¯ãããŸããïŒ
ããªãã®ç»é²ã³ã³ããŒãã³ãã¯ãreduxãèããŠå€æŽãåãåããšæããŸããïŒ ãŸãã¯ãå¥ã®ã³ã³ããŒãã³ããäžã«ãããšãã«æ°ããå°éå ·ãåãåã£ãåŸãã·ãŒã³ãåã¬ã³ããªã³ã°ãããªããšããåé¡ã¯ãããŸããïŒ
ã€ãŸãã onBack
ãæäŸããã®ã§ãç»é²ã·ãŒã³ãå®çŸ©ãããšãã¯ã次ã®ããã«åçŽã«ããå¿
èŠããããŸãã
const refreshOnBack = () => { Actions.pop(); Actions.refresh(); }
...
<Scene key="registration" component={Registration} onBack={refreshOnBack} />
...
ãããã§ãç§ã¯ããã¥ã¡ã³ããšããŠdetailedExampleã䜿çšããŠonBack
ã«ã€ããŠç¥ããŸããã§ããã
åé¡ãªãã ããªãããã¯ãã«ç§»è¡ãããšãã¯æè»æ§ãé«ããããhttpsïŒ//github.com/aksonov/react-native-router-flux/blob/master/docs/API_CONFIGURATION.mdãäžç®èŠãŠãã ãã:)
ããã«ã¡ã¯ã¿ããªã
ãŸã第äžã«ïŒç§ã¯reactãšjavascriptã®ã³ãŒãã£ã³ã°ã®åå¿è
ãªã®ã§ãæŽå¯ã«æè¬ããŸãã
@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ãã§ãupdateãããã¹ãããã·ãŒã³ãæŽæ°ããããã«å¿
èŠãªãã®ãå床åŒã³åºããŸãã
誰ããActions.refresh()
åé¡ã«ã€ããŠããå€ãã®æŽå¯ãæã£ãŠããå Žåã¯ãèºèºããªãã§ãã ããïŒ
ããããšãã
@Brokrayãããæ©èœããªãã£ãããšã¯èå³æ·±ãã§ããããšã«ããããè¯ã解決çããããŸãã ç§ã¯ããã²ãŒã·ã§ã³ã·ã¹ãã ã䜿çšããŠã¢ããªã®ç¶æ ãæž¡ãããšããããšãä¿¡ããŠããŸãã-ç§ã¯åžžã«ãã©ãã¯ã¹ã¹ãã¢ã«åºå·ããŠããŸãã
@Brokrayããã»ã©åé¡ããªããã°ãäŸãæããŠããã ããŸããïŒ åäžã®ã·ãŒã³ã«ã©ã®ããã«ã¬ãã¥ãŒãµãŒããããŸããïŒ ç§ã¯ãã¹ãŠã®ããã¥ã¡ã³ããèªã¿ãŸããããçŸæç¹ã§ã¯å°ãé ãããããã§ãã
@cridenourãããã¢ããªã®ç¶æ
èªäœãæž¡ããããããŸããã ã·ãŒã³Bãåã¬ã³ããªã³ã°ãããã ãã§ãã
ã·ãŒã³Bã§ã¯ãããŒã¿ããŒã¹ããšã«ããã€ãã®ããŒã¿ã衚瀺ããŠããŸãã ã·ãŒã³Cã«ã¯ãããŒã¿ããŒã¹ã«ããŒã¿ãè¿œå ãããã©ãŒã ããããŸãã ãŠãŒã¶ãŒãã·ãŒã³Bã«æ»ã£ããšãã«ããã¹ãŠã®ã©ã€ããµã€ã¯ã«ã¡ãœããïŒgetInitialStateãcomponentWillMountãªã©ïŒãèµ·åããŠãæ°ããè¿œå ãããããŒã¿ãååŸããŠè¡šç€ºãããã ãã§ãã ãããã®ã©ã€ããµã€ã¯ã«ã¡ãœããã¯å®è¡ãããŸããã
@jholtonæ£è§£ã§ããããã¯ãè¯ããæªãããReactã®èšèšã«ãããã®ã§ãã ãã©ãã¯ã¹ã®å®è£
ïŒreduxã®ãããªå€ãã®äººãç§ã¯å人çã«Altã䜿çšããŠããŸãïŒãè©ŠããŠãããã§ããŒã¿ã管çããããšã匷ããå§ãããŸãã ããããã°ãããŒã¿ãæŽæ°ãããšãã«ãã³ã³ããŒãã³ããåã¬ã³ããªã³ã°ããïŒã€ãŸãã render()
åå®è¡ãããŸãïŒãã³ã³ããŒãã³ãã®åæåã«äŸåããªããªããŸãã ããŒã¿ã¬ã€ã€ãŒãã³ã³ããŒãã³ãããé¢ããšãReactã®å€ãã®Reactã®åé¡ãã¯ããã«ç°¡åã«ãªããŸãïŒãããŠãã³ã³ããŒãã³ãã¯ããŒã¿ãèªã¿åã£ãŠè¡šç€ºããã ãã§ãïŒã
ãšã¯èšããã®ã®ãActions.refreshïŒïŒã¯ãæ°ããå°éå
·ãšåã¬ã³ããªã³ã°ïŒããã§ãã render()
ã®ã¿ïŒã®ã¿ãåŒãèµ·ãããcomponentWillMountãªã©ãåŒã³åºããŸããã
@jholtonãããšã @ cridenourãèšã£ãããã«ãã¢ã¯ã·ã§ã³ãç¶æ
ãã¬ãã¥ãŒãµãŒãä»ããŠããŒã¿ã管çã§ãããã©ãã¯ã¹å®è£
ïŒç¢ºãã«reduxïŒã䜿çšããŠããŸãã ãã©ãã¯ã¹ã®å®è£
ã«æ
£ããããåãã§äŸã瀺ããŸãã
@cridenourå©ããŠãããŠããããšãïŒ
@Brokrayãããç§ã¯ä»Reduxãã¥ãŒããªã¢ã«ã«é£ã³èŸŒãã§ããŸãã ãã©ãã¯ã¹/ãªããã¯ã¹ã«ã€ããŠãã£ãšè³¢ãè°è«ã§ããããã«ãªã£ããããã®ã¹ã¬ããã«æ»ããŸãã ããããšãã
æŽæ°ãããå°éå
·ã§æåããŸããã次ã®ãã¥ãŒã«åã³ç§»åããããšãããšããšã©ãŒãçºçããŸã
ãã®ã³ãŒãã¯ç§ã®èšå®ç»é¢ã«æžãããŠããŸã
Actions.popïŒïŒ;
Actions.refreshïŒ{keyïŒ 'pageOne'ãnameïŒ 'wwwww'}ïŒ;
ããã ããæ©èœããŠãã¥ãŒãæŽæ°ããŸãããããäžåºŠèšå®ç»é¢ã«ç§»åããããšãããšãšã©ãŒãçºçããŸã
é
ããŠå°éå
·ã§ç©ºã®ãªãã¬ãã·ã¥ãåŒã³åºãããšã§æçµçã«ããã解決ããŸãã
Actions.popToïŒ 'pageOne'ïŒ;
setTimeoutïŒïŒïŒ=> {
Actions.refreshïŒ{nameïŒ 'zzzzar'}ïŒ;
console.logïŒ "zzzz"ïŒ;
}ã10ïŒ;
@washaq ïŒããã¯ç§ã«ãšã£ãŠããªãã¯ã§ãã
@ ronyv89空ãå°ããã¯èª°ããããã§ç§ãå©ããããšãã§ããŸããïŒ " https://github.com/facebook/react-native/issues/9280 "
Actions.popïŒïŒ; Actions.refreshïŒïŒ;
ããŒãžãæŽæ°ããã ãã§ãåã®ã·ãŒã³ã«ã¯ç§»åããŸããã
Actionsã¡ãœãããçŽæãããŠããã®ã§ã次ã®ããã«ãããããã§ãŒã³ã§ãããšäŸ¿å©ã§ãã
Actions.pop().then(Actions.refresh()).
ãŸã
Actions.pop().refresh()
@israrhnrtechãš@tuneZolaã¯ãåã®æŽæ°ãåŒã³åºãããå Žåã¯
Actions.pop();
setTimeout(() => {
Actions.refresh({name:'zzzzar'});
console.log("zzzz");
}, 10);
ãŸããè¿ä¿¡@tuneZolaãš@washaqã«æè¬ããŸãã
ActionsïŒ 'pageOne'ïŒ;
setTimeoutïŒïŒïŒ=> {
Actions.refreshïŒ{nameïŒ 'zzzzar'}ïŒ;
console.logïŒ "zzzz"ïŒ;
}ã10ïŒ;
ãã®ã³ãŒãã¯éåžžã«ããŸãæ©èœããŠããŸã..
å床ãæè¬ããŸã ..
@israrhnrtechåé¡ãããŸãããããããšãã¬ã€ã«ãæ¬åœã«ããããããã®ã¯ç°¡åã«èŠããŸããããã€ãã£ãã®åå¿ãåããŠã§ããã®æ¹æ³ãããããªãå Žåã¯ãå¥ã®è©±ã«ãªããŸã:)
ç§ã®ã·ãŒã³ã§ã¯ããããšåãåé¡ã«çŽé¢ããŠããŸãã
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ïŒpreviousRouteïŒ;
@phpscrpt ããããã©ã®ããã«æ©èœãããã«ã€ããŠãããã€ãã®ã³ãŒãã§ãã£ãšç°¡åã«èª¬æã§ããŸããïŒ
@israrhnrtechç³ãèš³ãããŸããããreact-nativeã®çµã¿èŸŒã¿ã®Navigatorã³ã³ããŒãã³ãçšã§ãã react-native-router-fluxãããã²ãŒã¿ãŒã³ã³ããŒãã³ãããç¶æ¿ãããŠããå Žåã¯ãäœããã®åœ¢ã§æ©èœããå¯èœæ§ããããŸãã
@washaq以äžã«å®è£ ãããŠããã¿ã€ã ã¢ãŠããœãªã¥ãŒã·ã§ã³ã¯ãç§ã«ã¯æ©èœããŸããã
backAndRefreshïŒïŒ{
Actions.popïŒïŒ;
setTimeoutïŒïŒïŒ=> {
Actions.refreshïŒ{nameïŒ '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
ã䜿çšããŠãããšãã«å¥ã®éé·ç§»ãæ°ã«ããªãããšã¯èªããããŠããŸãïŒã ã¯ã€ãã¯nåä»ã
æåŸã«ããã§ããŸãæ©èœããŠãããã®ã¯ãããŸããïŒ äžèšã®ææ¡ã¯ã©ããå®éã«ã¯æ©èœããŠããŸãã...
+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ïŒ{refreshïŒ{testïŒtrue}}ïŒ
ã«å€æŽã§ããŸãã
NavigationActions.popïŒ{refreshïŒ{testïŒïŒtest}}ïŒ
19:29ã§ç«ã2017幎6æ20æ¥ã«ã¯ãMobileStar [email protected]
æžããŸããïŒ
ããã§åãåé¡ãéåžžã«å¥åŠã§ãã
ããŸãããããšãããã°ãããŸããããªãããšããããŸãããããç§ã®ã³ãŒãã§ãã ïŒç§ã®å Žåãã·ãŒã³AãšBãA => Bãããã²ãŒããããšã
B => Aãããã«ããïŒã·ãŒã³AïŒ
componentWillReceivePropsïŒnextPropsïŒ{
ifïŒthis.props.testïŒ== nextProps.testïŒ{
this._getUserïŒïŒ// popã®åŸã«ãã®funcãåŒã³åºãå¿ èŠããããŸã
}
}ã·ãŒã³B
NavigationActions.popïŒ{refreshïŒ{testïŒtrue}}ïŒ
ç§ãã©ããããŸãããããŸããããšã§ããããŸããã ïŒ
ããããšããâ
ãã®ã¹ã¬ããã«ãµãã¹ã¯ã©ã€ãããŠããããããããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/aksonov/react-native-router-flux/issues/465#issuecomment-309945049 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AExqB3CZM4U1yuwKslfuBj88uVVJulGtks5sGIAbgaJpZM4H_0pN
ã
@nikitphãååããã ãããããšãããããŸãã
ãããç§ã¯ããã§è©ŠããŸããã
ãã ããcomponentWillReceivePropsã¯ããããåŸã«åžžã«èµ·åãããšã¯éããŸããã
componentWillReceivePropsãèµ·åããããšãããŸãã¯ãããåŸã«ä»ã®ã©ã€ããµã€ã¯ã«é¢æ°ãèµ·åããããšãã«ãç§ã«ç¥ãããŠããããŸããïŒ
ããããã
@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ããã¯ãã³ã³ããŒãã³ããã«ãŒãã§åã¬ã³ããªã³ã°ããŠããŸãã ããããè¯ã解決çã§ã¯ãããŸãã
ç°¡åãªããªãã¯ãèŠã€ããŸãã...
çŸåšã®ç¶æ /çŸåšã®ããŒãž=>
Actions.popïŒïŒ;
setTimeoutïŒïŒïŒ=> {
Actions.refreshïŒ{
isRefreshïŒtrueã
}ïŒ;
}ã0ïŒ;
ééç¶æ /ããŒãž=>ã¬ã³ããªã³ã°å ã§ä»¥äžã®æ¡ä»¶ãè¿œå ã
ifïŒthis.props.isRefreshïŒ{
Actions.refreshïŒ{
isRefreshïŒfalseã
}ïŒ;
//ããã§setstateãåŒã³åºããšãèªåçã«åã¬ã³ââããªã³ã°ãããŸã...
this.setStateïŒ{isloadingïŒtrue}ïŒ;
ããããšãã
}
æãåèã«ãªãã³ã¡ã³ã
é ããŠå°éå ·ã§ç©ºã®ãªãã¬ãã·ã¥ãåŒã³åºãããšã§æçµçã«ããã解決ããŸãã
Actions.popToïŒ 'pageOne'ïŒ;
setTimeoutïŒïŒïŒ=> {
Actions.refreshïŒ{nameïŒ 'zzzzar'}ïŒ;
console.logïŒ "zzzz"ïŒ;
}ã10ïŒ;