Javascript 使用TabNavigator时如何直接导航到初始路线?
我正在使用Javascript 使用TabNavigator时如何直接导航到初始路线?,javascript,react-native,react-navigation,Javascript,React Native,React Navigation,我正在使用react-navigation中的TabNavigator。这很好,但我需要做点小动作 当我在StackNavigator路线之间导航时,在更改选项卡后,我需要我的路线直接进入初始路线。所以我需要重置路由状态 const HomeStack = StackNavigator({ Main: { screen: HomeScreen }, Profile: { screen: ProfileScreen }, }); const AboutStack = StackNav
react-navigation
中的TabNavigator
。这很好,但我需要做点小动作
当我在StackNavigator
路线之间导航时,在更改选项卡后,我需要我的路线直接进入初始路线。所以我需要重置路由状态
const HomeStack = StackNavigator({
Main: { screen: HomeScreen },
Profile: { screen: ProfileScreen },
});
const AboutStack = StackNavigator({
Main: { screen: AboutScreen },
});
TabNavigator(
{
Home: { screen: HomeStack },
About: { screen: AboutStack },
}
假设我在主页
选项卡的主
路线上,然后在切换到关于
选项卡之前导航到配置文件
。当我回到Home
选项卡时,我希望我的应用程序直接导航到Main
路线并清除历史记录。就像重置一样
有什么建议吗?你也许可以使用
willFocus
监听器来查看你的主页
侦听器:
然后,如果您在Main
上,并且正在导航到您的Profile
路线。您应该在导航中设置一个参数,说明上一条路线是Main
路线参数:navigation.navigate('Profile',{previous_screen:'Main')代码>
因此,现在在您的willFocus
侦听器中:
- 如果设置了
previous_屏幕
param,则表示您无需执行任何操作
- 如果不是,则表示您来自另一个选项卡,它将导航到错误的路线。因此,您可以重置导航路线,或者只导航到“配置文件”路线
注意:
我没有尝试这个解决方案,可能过渡动画不会很平滑。所以告诉我它是否能很好地完成工作
class Profile extends Component {
componentDidMount() {
this.didFocusListener = this.props.navigation.addListener(
'didFocus',
() => { console.log('did focus') },
);
}
componentWillUnmount() {
this.didFocusListener.remove();
}
render() {
return ( /* your render */ );
}
}