带有有效载荷的动作POP未由任何导航器处理

时间:2020-02-21 00:42:54

标签: react-native react-navigation react-navigation-stack react-navigation-v5 react-navigation-bottom-tab

我不知道是什么原因导致我的本机应用程序出现此错误。我正在使用React Navigation库的版本5。

enter image description here

随机崩溃有时该应用。 Google搜索并没有帮助我理解这是什么。这是非常有选择性的,尽管这是件好事(或坏事)。

那是什么意思,可能是什么原因?

5 个答案:

答案 0 :(得分:1)

if(navigation.canGoBack()) {
  navigation.dispatch(StackActions.pop(1));
}

请参阅https://github.com/react-navigation/react-navigation/issues/7814#issuecomment-599921016

答案 1 :(得分:0)

您尝试过吗?

this.props.navigation.goBack()

答案 2 :(得分:0)

由于它是由navigation.pop触发的开发错误级别警告,因此您可以暂时将其禁用:

const temp = console.error;
console.error = () => {};
navigation.pop();
console.error = temp;

答案 3 :(得分:0)

您需要通过canGoBack这样的方法检查是否可以返回

import {  StackActions } from '@react-navigation/native';

if(this.refs.navigation.canGoBack())
{
  this.refs.navigation.dispatch(StackActions.pop(1));
// this.refs.navigation.dispatch(StackActions.popToTop());
}

答案 4 :(得分:0)

错误原因:多次调用 goBack() 或 pop()。有时 onPress 事件会被多次调用。您可以通过添加 console.log() 来检查。

如何解决:您需要throttle onPress 函数。

示例

import React, { PureComponent } from 'react'
import { Text, View } from 'react-native'
import { throttle } from 'lodash'

export default class Test extends PureComponent {
    constructor(props) {
        super(props)
    
        this.state = {
             
        }
        this.onPress = throttle(this.onPress, 500, {trailing: false})
    }
    

    onPress = () => {
        console.log("going back")
        this.props.navigation.pop();
        //this.props.navigation.goBack();
    }
     
    render() {
        return (
            <View>
                <Text>Hello World!</Text>
            </View>
        )
    }
}