这是我的导航结构。
--SwitchNav
--Main Tab Nav
--Stack Nav A
--Stack Nav B
--Stack Nav C
--Stack Nav D (Current)
--Onboard Stack Nav
在堆栈导航D的某个地方,我想重置堆栈导航A,B和C的堆栈,但我不想将用户从堆栈导航D上的当前屏幕导航。
我一直在研究 StackActions.reset,并了解如何使用它来重置和导航到特定堆栈,但是我将如何使用它(或以其他方式完成(我在上述场景中描述的内容?
没有特定的方法来做到这一点。一个解决方案是不导航,做一个this.props.dangerouslyGetParent()
,然后从那个循环中穿过 3 个孩子并重置它们。例如:
resetOtherStacks=()=>{
let parentNav=this.props.dangerouslyGetParent()
parentNav.getChildNavigation("Stack Nav A").reset()
}
并对需要重置的每个堆栈进行重置。
函数 getChildNavigation(ChildKey)
需要您在创建MainTabNav
时定义的子密钥。
希望对您有所帮助!