所谓越级回跳,就是 popN 的功能javascript
为何须要越级回跳?由于个人 APP 透析记词须要实现文件浏览,而越级回跳是一个很基础的文件导航功能java
如何用 StackNavigator 实现这个功能?重任落到了 goBack 函数和路径的 key 属性上面react
key 属性在this.props.navigation.state
这个对象(object)中,是由系统自动生成的一个惟一标识git
key 能够做为 goBack 函数的参数,假设程序的导航路径是 A -> B -> C -> D ,在 D 路径上使用 goBack(keyOfB),将实现 D 到 A 的跳转(是的,是跳回到 A,而不是 B)github
问题是如何在 D 路径中得到 A(或者是 B)的 key,目前的实现方案是当 navigate 到下一个路径时,须要把如今路径的 key 以及以前路径传下来的 keys 一块儿做为参数 keys 传给下一个路径,函数
举例从 B 导航到 C ,navigate 的写法this
let { navigate, state } = this.props.navigation // 导航到 C // state.params.keys 是 array,包含以前路径的 key navigate('DirViewOfC', {keys: state.params.keys.concat(state.key)})
在 C 路径,就能够经过this.props.navigation.state.params.keys
得到以前路径的 key。code
详细的代码实现能够查看透析记词的源码
React Navigation 有关 Navigation Prop 的资料对象