【问题标题】:Where do I place a reset stack function in navigator?在导航器中的何处放置重置堆栈功能?
【发布时间】:2019-04-11 15:45:20
【问题描述】:

我是第一次在 React Native 中工作,并尝试在用户单击不同屏幕时重置堆栈导航。我在所有导航器之上创建了一个 resetStack 函数,但不知道在哪里调用它才能工作,我已经在黑暗中拍摄了一段时间,所以任何输入都值得赞赏。提前致谢!

我尝试了几个不同的地方。在导航选项中,在其下方,在将它们全部放在一起的导航器中。如有必要,我可以分享更多代码。

resetStack = () =>{
  this.props.navigation
  .dispatch(StackActions.reset({
    index: 0,
    actions: [
      NavigationActions.navigate({
        routeName: Home
const HomeStack = createStackNavigator({

  Home: HomeScreen,
})

HomeStack.navigationOptions = {
  tabBarOptions: {
    labelStyle: {
      fontSize: 7,
    },  
    showIcon: true,
    style: {
      backgroundColor: Colors.starsBlue,
    },
    indicatorStyle: {
      backgroundColor: "transparent",
    }
  },
  tabBarPosition: 'bottom',
  tabBarLabel: 'Home',
  tabBarIcon: ({ focused }) => (
    <TabBarIcon
      focused={focused}
      name={
        Platform.OS === 'ios'
          ? 'ios-home'
          : 'md-home'
      }
    />

  ),
}

【问题讨论】:

  • 重置堆栈函数用于您要重置导航堆栈的位置。例如,在登录或注销时,用户注销或登录用户来到各种屏幕,但最后他们来到主屏幕或登录屏幕。如果在这个阶段我们没有重置堆栈,他们会从家里回来按,所有导航屏幕都会再次出现。这就是我们使用重置堆栈功能的原因。

标签: react-native stack-navigator


【解决方案1】:

我已经检查了您尝试的解决方案。 尝试替换

onPress={() => { this.handleHomePressed() }}

 onPress={() =>this.handleHomePressed() }

handleHomePressed() 内部:

handleHomePressed(){
    return this.props
               .navigation
               .dispatch(NavigationActions.reset(
                 {
                    index: 0,
                    actions: [
                      NavigationActions.navigate({ routeName: 'Home'})
                    ]
                  }));
  }

希望它有效!

【讨论】:

  • 对不起,我不明白。您是要我用不同的 onPress 替换,但我没有 onPress 函数开始?
猜你喜欢
  • 1970-01-01
  • 2019-03-08
  • 2019-07-16
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 2022-01-24
相关资源
最近更新 更多