据我所知,reset
中的react-navigation
是通过调度NavigationActions.reset();
的redux操作完成的
控制台日志记录this.props.navigation
显示了一个重置功能,但是如果我尝试将其用作this.props.navigation.reset('Home')
,则会抛出错误newStackActions.map
不是一个函数。
我们可以不使用redux重置整个导航吗?应该有这样的功能,我想我找不到它:/
答案 0 :(得分:1)
您可以使用StackActions重设特定的堆栈,并使用导航的内部调度程序
进行调度import { StackActions, NavigationActions } from 'react-navigation';
const resetAction = StackActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: 'Profile' })],
});
this.props.navigation.dispatch(resetAction);
答案 1 :(得分:0)
显然,在尝试了一些方法之后。 replace
似乎工作正常。
this.props.navigation.replace(ScreenName)
将当前屏幕替换为指定的屏幕,而不会增加屏幕堆栈,实际上,您只是在切换屏幕。
如果有人需要帮助,我就把它留在这里。
编辑
注意-万一感到困惑,replace
不会模仿reset
函数的行为。
replace
只是将您当前的活动屏幕或堆栈中最顶层的屏幕替换为给定屏幕,而
reset
本质上会擦除您的整个导航历史记录,并根据您提供的屏幕引用创建一个新的导航对象。换句话说,您基本上可以创建一个导航堆栈,其中包含从未访问过的屏幕。 (不确定如何实现);