React-native-navigation:goBack() 不起作用

Posted

技术标签:

【中文标题】React-native-navigation:goBack() 不起作用【英文标题】:React-native-navigation: goBack() doesn't work 【发布时间】:2017-10-14 09:31:51 【问题描述】:

我在 React Native 中使用 React Navigation 和 Redux。 导航工作正常,但在一个屏幕上 goBack() 函数不起作用。你能告诉我们为什么吗?

这是标题配置:

static navigationOptions = 
        header: ( state, goBack ) => 
            return 
                title: state.params.name,
                right: (<Button
                    title='Done'
                    onPress=() => goBack()
                />)

            
        
    

这是已调度的事件:

没有弹出屏幕。设备上的屏幕保持不变。

【问题讨论】:

【参考方案1】:

试试 &lt;Button onPress=() =&gt; this.props.navigation.goBack(null)&gt;

null 用作输入参数时,它会将您带到最后一页(即时历史记录),并且在嵌套 StackNavigators 回到父级的情况下会有所帮助当子导航器在堆栈中只有一项时,导航器。

他们将来可能会改变,因为根据他们的文档,他们计划改变它。

更多信息请查看here。

【讨论】:

【参考方案2】:

我认为,如果您想使用 goBack() 操作,您必须在视图中使用类似的内容(而不是标题)

<Button onPress=() => this.props.navigation.goBack()>

【讨论】:

也测试了这个。不起作用...看起来 react-native-navigation 库有问题:gitHub Issue 这仅在您不想使用功能时有效。当你使用带有 onPress 的函数并使用 navigation.goback() 时,它不起作用。【参考方案3】:

GoBack 有点不稳定,明确地调度对我有用的操作。

import  NavigationActions  from 'react-navigation';

this.props.navigation.dispatch(NavigationActions.back())

【讨论】:

【参考方案4】:

我也有同样的问题。我不知道为什么,但是写 goBack(null) 对我有用:|

【讨论】:

【参考方案5】:

这是github issue 中发布的工作解决方案

setTimeout(this.props.navigation.goBack, 0)

显然这个错误是最近的回归。

【讨论】:

【参考方案6】:

这是一个解决方案。

这是我的工作代码:-

static navigationOptions = (navigation, screenProps) => 
     return 
         title:'SECOND',
         headerStyle: backgroundColor: '#ffffff',
         headerTitleStyle:fontSize:12,
         headerLeft:<TouchableOpacity onPress=()=>navigation.goBack()>
                      <Image source=uri:'back_btn' style=height: 20, width: 20,marginLeft:10,/>
                  </TouchableOpacity>
     
  

【讨论】:

【参考方案7】:

根据github issue 上发布的解决方案。将null 作为参数传递给goBack 函数应该可以正常工作,就像它对我所做的那样。以下代码在 OP 的情况下应该可以工作:

static navigationOptions = 
        header: ( state, goBack ) => 
            return 
                title: state.params.name,
                right: (<Button
                    title='Done'
                    onPress=() => goBack(null)
                />)

            
        
    

【讨论】:

【参考方案8】:

使用StackActions API 破坏了我的应用中的导航。通过导航到仅使用(更简单且更可靠)NavigationActions API 的屏幕,后退按钮起作用。

【讨论】:

【参考方案9】:

反应导航

<TouchableOpacity onPress=()=> this.props.navigation.goback() >
 <Text>Back</Text>
</TouchableOpacity>

react-native-router-flux

<TouchableOpacity onPress=() =>  Actions.pop() >
 <Text>Back</Text>
</TouchableOpacity>

【讨论】:

以上是关于React-native-navigation:goBack() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

React-native-navigation:goBack() 不起作用

react-native-navigation如何在`shouldComponentUpdate`中检测当前屏幕

React-native-navigation 选项卡栏中心圆圈图标

React-Native-Navigation (WIX):如何更新底部标签的徽章计数?

在bottomTab配置react-native-navigation中设置图标大小

使用 wix@react-native-navigation 运行 react-native 应用程序时出错