react-navigation提供有goBack()这api, 但是使用返回栈中某个组件的方法this.props.navigation.goBack('component')或this.props.navigation.dispatch(NavigationActions.back({key: "component"}))没有反应, 原理是因为这里的component不是用自定义的routeName而是用自动生成的随机值key. 又没有提供有api获取组件的key, 手动去获取又十分麻烦.
如何才能让goBack()支持使用routeName呢, 这里找到了一个解决方案 issues;
具体就是:
- 把
项目/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)...
有点坑...
不知有没有更好的解决方法...
