undefined 不是路由 react native 中的对象
2020-07-06
85
我创建了一个组件列表详细信息屏幕和列表项中的列表项,它有一张卡片,当人们点击卡片时它会显示 listingDetailScreen 当突然点击时发生同样的情况我想制作一个底部选项卡导航器并且在底部选项卡导航器中我已经传递了组件列表详细信息但它通过错误未定义不是一个对象这是我的列表屏幕的代码
const listings = [
{
id: 1,
title: "Close your eyes",
price: 10,
image: require("../assets/child.png"),
},
{
id: 2,
title: "dare to surrender",
price: 15,
image: require("../assets/blur.png"),
},
];
export default function ListingsScreens({ navigation }) {
return (
<ExpoScreen style={styles.screen}>
<FlatList
data={listings}
keyExtractor={(listings) => listings.id.toString()}
renderItem={({ item }) => (
<CardList
title={item.title}
subtitle={"$" + item.price}
image={item.image}
onPress={() => navigation.navigate("ListingDetails", item)}
/>
)}
/>
</ExpoScreen>
);
}
这是我的 Screendetailscreen
export default function ListingDetailsScreen({ route }) {
console.log(route);
const listing = route.params;
return (
<View style={styles.Screen}>
<View style={styles.card}>
<Image style={styles.CardImage} source={listing.image} />
<View style={styles.tittleContainer}>
<AppText style={styles.title}>{listing.title}</AppText>
<AppText style={styles.subtitle}>{listing.price}</AppText>
</View>
</View>
<ListItem
image={require("../assets/dummyFemale.png")}
title="Anna bella"
sutitle="suck 5 person blood"
/>
</View>
);
}
在这里我制作了一个选项卡导航器
const Tab = createBottomTabNavigator();
const AppNavigation = () => (
<Tab.Navigator>
<Tab.Screen name="Feed" component={FeedNavigator} />
<Tab.Screen name="ListingEdit" component={ListingDetailsScreen} />
<Tab.Screen name="Account" component={AccountNavigator} />
</Tab.Navigator>
);
export default AppNavigation;
2个回答
<Tab.Screen name="ListingEdit" component={ListingDetailsScreen} />
这将导航到
ListingDetailsScreen
,没有任何参数,
您可以在从
<Tab.Navigator>
调用
ListingDetailsScreen
时尝试传递参数:
尝试这样做:
<Tab.Screen
name="ListingEdit"
component={() => <ListingDetailsScreen route={{ params: ITEM }} />}
/>
但同样,您必须找到一种方法来在
AppNavigation
中获取您的 ITEM,以便您可以将其作为道具传递。
Muhammad Ovi
2020-07-07
您可以尝试使用 getParams。 例如:route.getParams('parameter_name')。 如果不起作用,您需要使用此代码进行确认。
console.log(route)
或者 console.log(JSON.stringfy(route)) 结果,您可以检查是否返回了正确的路由。 检查后,您可以从路由对象中获取正确的参数。 希望您成功。
Angel Jerry
2020-07-06