2

我不知道是什么导致了我的反应原生应用程序中的这个错误。我正在使用 React Navigation 库的第 5 版。

在此处输入图像描述

有时会随机崩溃应用程序。谷歌搜索并没有帮助我理解这是什么。虽然这是一件好事(或坏事),但它非常有选择性。

那么这意味着什么以及可能导致它的原因是什么?

4

5 回答 5

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

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

于 2020-08-03T07:22:10.340 回答
1

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

如何解决:您需要限制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>
        )
    }
}
于 2021-04-15T11:36:51.740 回答
0

你试过这个吗?

this.props.navigation.goBack()
于 2020-02-21T06:56:30.367 回答
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());
}
于 2020-11-26T07:43:21.167 回答
0

这意味着您试图弹出一个没有什么可弹出的视图。这可能意味着您的应用程序中存在错误,因为通常情况下,当没有要弹出的视图时,您不应该弹出视图。

但它也可能是故意设计的一部分,您对当前导航状态了解不足,但需要确保至少完成一次弹出(类似于清除标志变量,即使它可能一开始就没有设置,在这种情况下,它将是无操作的)。如果是这种情况,那么您可以禁用此开发级警告:

const temp = console.error;
console.error = () => {};
navigation.pop();
console.error = temp;
于 2020-06-28T19:58:15.880 回答