我遇到了一个错误。当我尝试重置屏幕导航堆栈时,出现此错误
The action 'Navigation/RESET' was not handled by any navigation
我重置导航的代码是:
let resetAction = StackActions.reset({
key: null,
index: 0,
actions: [
NavigationActions.navigate({ routeName: 'ScreenName' })
]
})
this.props.navigation.dispatch(resetAction)
如果您能提出任何解决方案,我们将非常感激。
在 5.x 版本中,重置导航的方式发生了变化。你可以使用:
import { StackActions } from '@react-navigation/native';
this.props.navigation.dispatch(
StackActions.popToTop()
);
从堆栈中弹出所有页面重定向,然后返回到第一个屏幕。 (在展会上查看)
或者您可以使用:
import { CommonActions } from '@react-navigation/native';
navigation.dispatch(
CommonActions.reset({
index: 1,
routes: [
{ name: 'Home' },
{
name: 'Profile',
params: { user: 'jane' },
},
...
],
})
);
将您的导航状态重置为初始状态。
这里有一个零食博览会的现场演示(使用android选项卡,从主页转到
details
页面,然后page 3
,然后按重置。你可以看到它现在在主页上,如果你按返回,它会退出。)(popToTop
的代码位于第 44 行)
Ps: 如果你没有使用 5.x 版本,首先确保你有一个名为
ScreenName
的路由(因为你使用的是 : routeName: 'ScreenName'
,如果它没有修复它,请尝试其他代码来重置,例如:这里)