关于goBack返回指定页面
react-navigation
是提供了goBack()到指定页面的方法的,那就是在goBack()中添加一个参数,但当你使用goBack(‘Main‘)
的时候,你会发现并没有跳转,原因是react-navigation默认goBack()中的参数是系统随机分配的key
,而不是手动设置的routeName
,而方法内部又没有提供可以获得key
的方法,所以这里只能通过修改源码将key
换成routeName
了。
下面的内容直接引用了hello老文
的内容
把项目/node_modules/react-navigation/src/routers/StackRouter.js文件里的
const backRoute = state.routes.find((route: *) => route.key === action.key);
改成 const backRoute = state.routes.find(route => route.routeName === action.key);
但不是很完美,这里的component要填想返回的组件的前一个组件的routeName,比如你的栈里顺序是home1,home2,home3,home4,在home4里要返回home2,使用this.props.navigation.goBack(‘home3‘);; 并且又会带出一个问题: goBack()方法没反应了,必须加个null进去,写成goBack(null)...
关于goBack返回指定页面的修改完善版
if (action.type === NavigationActions.BACK) { let backRouteIndex = null; if (action.key) { const backRoute = state.routes.find( /* $FlowFixMe */ /* 修改源码 */ route => route.routeName === action.key /* (route: *) => route.key === action.key */ ); /* $FlowFixMe */ console.log(‘backRoute =====‘,backRoute); backRouteIndex = state.routes.indexOf(backRoute); console.log(‘backRoute =====‘,backRouteIndex); } if (backRouteIndex == null) { return StateUtils.pop(state); } if (backRouteIndex >= 0) { return { ...state,routes: state.routes.slice(0,backRouteIndex+1),index: backRouteIndex - 1 + 1,}; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。