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)
...
有点坑...
不知有没有更好的解决方法...