【问题标题】:How to switch to a different tab and reset all tabs in TabNavigator in React Native如何在 React Native 中切换到不同的选项卡并重置 TabNavigator 中的所有选项卡
【发布时间】:2019-05-07 06:00:19
【问题描述】:

已经以多种不同的形式提出了这个问题,我搜索了一整周,但无法弄清楚如何在以下设置中从 Connect 导航回 Devices

const HomeStack = createStackNavigator({
    Devices: DevicesScreen,
    Details: DetailsScreen, // go here
})

const NewDeviceStack = createStackNavigator({
    Start: StartScreen,
    Connect: ConnectScreen, // start here
})

const BottomTabs = createBottomTabNavigator(
{
    Home: { screen: HomeStack },
    Settings: { screen: NewDeviceStack },
}

export default createAppContainer(BottomTabs);

Connect 屏幕,此代码尝试重置当前堆栈并返回到Devices

const resetAction = StackActions.reset({
        index: 0,
        key: null,
        actions: [
            NavigationActions.navigate({routeName: 'Devices'})
            ],
        })
this.props.navigation.dispatch(resetAction)

这失败了:

Error: There is no route defined for key Devices.
Must be one of: 'Start','Connect'

【问题讨论】:

    标签: react-native react-navigation react-native-navigation


    【解决方案1】:

    使用navigation 道具,点击按钮导航到设备屏幕

    this.props.navigation.navigate('Devices')
    

    或者只是创建一个函数来处理导航

    goToScreen = (routeName, params = {}) => {
    
      const navigateAction = NavigationActions.navigate({
        routeName: routeName,
    
        params: params, // parameter
    
        action: NavigationActions.navigate({ routeName: routeName }), // screen you want to navigate to
      });
    
      this.props.navigation.dispatch(navigateAction);
    
    };
    

    【讨论】:

    • 谢谢我会试试这个。如何在导航时强制重新加载/重新渲染设备屏幕?
    • 它应该刷新,当你降落在那里。
    • 好的,试过了。屏幕从Connect 切换到Devices 但不会调用componentDidMountrender。有没有要添加的听众?
    • componentDidMount 确实被调用见snack.expo.io/@lekgwaraj/delete-me
    • 好的,试过了。屏幕从连接到设备切换 这回答了您的问题,并应标记为答案。如果某些事情不起作用,请为此创建一个新问题,而不是向现有问题添加新问题。
    猜你喜欢
    • 1970-01-01
    • 2018-08-12
    • 2022-01-09
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 2022-10-09
    相关资源
    最近更新 更多