react-native-router-flux popTo('想pop到的scene') 回退多级不能实现问题
来源:互联网 发布:保险师软件下载 编辑:程序博客网 时间:2024/05/21 07:53
我测试的react-native-router-flux版本是
"version": "4.0.0-beta.24":
修改地方:
1、将src/Reducer下第54行
// while (nextScene !== currentScene && newState && nextScene !== routeName) {
while (newState && nextScene !== routeName) {
2、将dist/Reducer下75行的// createReducer;var _navigationStore=require('./navigationStore');var _navigationStore2=_interopRequireDefault(_navigationStore);var _ActionConst=require('./ActionConst');var ActionConst=_interopRequireWildcard(_ActionConst);var _reactNavigation=require('react-navigation');var _State=require('./State');function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key];}}newObj.default=obj;return newObj;}}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}var supportedActions=exports.supportedActions=(_supportedActions={},_defineProperty(_supportedActions,ActionConst.PUSH,_reactNavigation.NavigationActions.NAVIGATE),_defineProperty(_supportedActions,ActionConst.BACK,_reactNavigation.NavigationActions.BACK),_defineProperty(_supportedActions,ActionConst.REFRESH,_reactNavigation.NavigationActions.BACK),_defineProperty(_supportedActions,ActionConst.RESET,_reactNavigation.NavigationActions.RESET),_supportedActions);var createAction=function createAction(type){return function(){var payload=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return _extends({type:type},payload);};};function reducer(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:_navigationStore2.default.state;var action=arguments[1];var type=action.type;var routeName=action.routeName;if(supportedActions[type]){var newState=_navigationStore2.default.router.getStateForAction(createAction(supportedActions[type])({routeName:routeName,params:action.params}),state);return newState||state;}if(type===ActionConst.JUMP){var _newState=_navigationStore2.default.router.getStateForAction(_reactNavigation.NavigationActions.navigate({routeName:routeName,params:action.params}),state);var activeState=(0,_State.getActiveState)(state);if(activeState.routeName==='DrawerOpen'){activeState=(0,_State.getActiveStateExceptDrawer)(state);if((0,_State.isActiveRoute)(state,routeName)){return _navigationStore2.default.router.getStateForAction(_reactNavigation.NavigationActions.navigate({routeName:'DrawerClose'}),state);}}if((0,_State.isActiveRoute)(state,routeName)){return state;}var key=(0,_State.getActiveState)(_newState).key;return _navigationStore2.default.router.getStateForAction(_reactNavigation.NavigationActions.setParams({key:key,params:action.params}),_newState);}else if(type===ActionConst.POP_TO){var nextScene='';var _newState2=state;var currentState=state;var currentScene=(0,_State.getActiveState)(state).routeName;while(nextScene!==currentScene&&_newState2&&nextScene!==routeName){_newState2=_navigationStore2.default.router.getStateForAction(_reactNavigation.NavigationActions.back(),currentState);if(_newState2){nextScene=(0,_State.getActiveState)(_newState2).routeName;if(nextScene!==routeName){currentState=_newState2;}}}return nextScene===routeName?_newState2:state;}else if(type===ActionConst.REPLACE){var _newState3=_navigationStore2.default.router.getStateForAction(_reactNavigation.NavigationActions.navigate({routeName:routeName,params:action.params}),state);return(0,_State.popPrevious)(_newState3);}return _navigationStore2.default.router.getStateForAction(action,state)||state;}function createReducer(){
return reducer;
}
修改为
createReducer;var_navigationStore=require('./navigationStore');var_navigationStore2=_interopRequireDefault(_navigationStore);var_ActionConst=require('./ActionConst');varActionConst=_interopRequireWildcard(_ActionConst);var_reactNavigation=require('react-navigation');var_State=require('./State');function_interopRequireWildcard(obj){if(obj&&obj.__esModule){returnobj;}else{varnewObj={};if(obj!=null){for(varkey in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key];}}newObj.default=obj;returnnewObj;}}function_interopRequireDefault(obj){returnobj&&obj.__esModule?obj:{default:obj};}function_defineProperty(obj,key,value){if(keyin obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}returnobj;}varsupportedActions=exports.supportedActions=(_supportedActions={},_defineProperty(_supportedActions,ActionConst.PUSH,_reactNavigation.NavigationActions.NAVIGATE),_defineProperty(_supportedActions,ActionConst.BACK,_reactNavigation.NavigationActions.BACK),_defineProperty(_supportedActions,ActionConst.REFRESH,_reactNavigation.NavigationActions.BACK),_defineProperty(_supportedActions,ActionConst.RESET,_reactNavigation.NavigationActions.RESET),_defineProperty(_supportedActions,ActionConst.REPLACE,_reactNavigation.NavigationActions.RESET),_supportedActions);varcreateAction=function createAction(type){return function(){varpayload=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return_extends({type:type},payload);};};functionreducer(){varstate=arguments.length>0&&arguments[0]!==undefined?arguments[0]:_navigationStore2.default.state;varaction=arguments[1];vartype=action.type;varrouteName=action.routeName;if(supportedActions[type]){varnewState=_navigationStore2.default.router.getStateForAction(createAction(supportedActions[type])({routeName:routeName,params:action.params}),state);returnnewState||state;}if(type===ActionConst.JUMP){var_newState=_navigationStore2.default.router.getStateForAction(_reactNavigation.NavigationActions.navigate({routeName:routeName,params:action.params}),state);varactiveState=(0,_State.getActiveState)(state);if(activeState.routeName==='DrawerOpen'){activeState=(0,_State.getActiveStateExceptDrawer)(state);if((0,_State.isActiveRoute)(state,routeName)){return_navigationStore2.default.router.getStateForAction(_reactNavigation.NavigationActions.navigate({routeName:'DrawerClose'}),state);}}if((0,_State.isActiveRoute)(state,routeName)){returnstate;}varkey=(0,_State.getActiveState)(_newState).key;return_navigationStore2.default.router.getStateForAction(_reactNavigation.NavigationActions.setParams({key:key,params:action.params}),_newState);}else if(type===ActionConst.POP_TO){varnextScene='';var_newState2=state;varcurrentState=state;while(_newState2&&nextScene!==routeName){_newState2=_navigationStore2.default.router.getStateForAction(_reactNavigation.NavigationActions.back(),currentState);if(_newState2){nextScene=(0,_State.getActiveState)(_newState2).routeName;if(nextScene!==routeName){currentState=_newState2;}}}returnnextScene===routeName?_newState2:state;}else if(type===ActionConst.POP_AND_PUSH){var_newState3=_navigationStore2.default.router.getStateForAction(_reactNavigation.NavigationActions.back(),state);return_navigationStore2.default.router.getStateForAction(_reactNavigation.NavigationActions.navigate({routeName:routeName,params:action.params}),_newState3);}return_navigationStore2.default.router.getStateForAction(action,state)||state;}functioncreateReducer(){
return reducer;
}
- react-native-router-flux popTo('想pop到的scene') 回退多级不能实现问题
- react-native-router-flux(一)
- ReactNative React-native-router-flux框架---刷新当前页面的属性
- react-native-router-flux 使用详解(一)
- iOS中UINavigationController实现多级pop回退
- 【React Native】实现Navigator Back回退
- (React-Native 学习之六) react-native-router-flux 组件学习
- react-native使用flux
- React Native + Flux
- ReactNative React-native-router-flux框架---页面跳转与传值
- react-router V4 版本不能嵌套路由的问题
- React Native之 Flux架构
- React-Native Flux思想的学习与重构
- react中flux和redux解决的问题
- react-router Switch 组件不能动态更换子路由的问题
- 升级成功了React native 到40的问题
- React-Router 4.2 的嵌套路由实现
- 回退(pop&present)到根页面(根控制器)的方法,很不错~
- java线程安全问题之静态变量、实例变量、局部变量
- Logistic regression的林林总总
- web前端第九天
- 斯坦福大学机器学习作业题Problem Set #2 Logistic Regression: Training stability--下篇
- IDEA :插入代码模板(Ctrl+J )
- react-native-router-flux popTo('想pop到的scene') 回退多级不能实现问题
- c++之友元
- Codeforces Gym
- 列表有关
- Unity游戏开发 全局消息传递
- (python3)1077. 互评成绩计算 (20分)——2017-12考题
- 浅析 JavaScript 执行原理
- Gobblin作为嵌入应用(Library)
- [论文笔记]TextBoxes A Fast Text Detector with a Single Deep Neural Network