TypeError: undefined is not an object (evaluating '_route$params.lat')

TypeError: undefined is not an object (evaluating '_route$params.lat')

我有 React 本机应用程序,我有两个屏幕,所以在第一个屏幕中,用户将导航到另一个屏幕,该屏幕将获得三个值,在单击按钮时,我再次将这些值传递给第一个屏幕,在第二个屏幕中我正在使用这样的方式传递参数:

<TouchableOpacity style={styles.touch} onPress={() => this.props.navigation.navigate("dashboard", { lat: this.state.latitude, long:this.state.longitude, alt: this.state.altitude})}>

但是我在第一个屏幕中收到此错误 TypeError: undefined is not an object (evaluating '_route$params.lat'),我知道这些值是空的,因为我必须导航到第二个屏幕,当从第二个屏幕导航到第一个屏幕时将传递这些值。我该如何解决?

我已经按照 documentation 一步步操作了,我还在第一个屏幕上做了以下操作

const app = ({ route, navigation }) => {
    const { lat } = route.params;
    const { long } = route.params;
    const { alt } = route.params;

注意第二屏是class组件,第一屏是函数组件 下面是卡住的

    <RootStack.Navigator>
               //this first screen
                <RootStack.Screen
                    name="dashboard"
                    component={app}
                    options={{ headerShown: false }}
                />
//second screen
                <RootStack.Screen
                    name="location"
                    component={location}
                    options={{
    
                        title: 'Verify your location',
                    }}
                />
            </RootStack.Navigator>

你在这里做的与正常的参数传递不同。 此处您正在尝试将参数传递到上一个屏幕。

显示错误是因为第一次加载屏幕时没有任何参数,因此它是未定义的,但是当您转到下一个屏幕并传递参数和导航时,参数将在那里。因此,您要做的解决方法是验证参数。

你可以像下面那样做,如果有参数,这会将值设置为纬度。

const lat = route.params?.lat;

还要确保检查并使用 lat 的值,因为它在第一次时是未定义的。

您可以在此处查看有关将参数传递到上一屏幕的文档,useEffect 挂钩可用于检查参数是否已更新并对其进行操作。 https://reactnavigation.org/docs/params/#passing-params-to-a-previous-screen