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
我有 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