gpt4 book ai didi

react-native - 使用对象作为参数调用导航时,您需要指定名称或键

转载 作者:行者123 更新时间:2023-12-04 17:20:00 25 4
gpt4 key购买 nike

我有一个消息屏幕,我需要在点击消息列表项时导航到“单个消息”,但我收到此错误 "you need to specify name or key when calling navigate with an object as the argument"我已经创建了“单个消息”屏幕并将其添加为 ,但我不知道我做错了什么。
下面是我的代码:

function MessagesScreen({navigation}) {
const [messages, setMessages] = useState([]);
const [refreshing, setRefreshing] = useState(false);

const loadMessages = async () => {
const response = await messagesApi.getMessages();
setMessages(response.data);
}

useEffect(() => {
loadMessages();
}, []);

const handleDelete = message => {

setMessages(messages.filter((m) => m.id !== message.id));
}

return (
<Screen>
<FlatList
data={messages}
keyExtractor={message => message.id.toString()}
renderItem={({ item }) =>
<ListItem
title={item.fromUserId}
subTitle={item.content}
image={item.image}
onPress={() => navigation.navigate(routes.MESSAGE_SINGLE, item)}
renderRightActions={() =>
<ListItemDeleteAction onPress={() => handleDelete(item)} />}
/>
}
ItemSeparatorComponent={ListItemSeparator}
refreshing={refreshing}
onRefresh={() => {
setMessages([
{
id: 1,
title: 'T1',
description: 'D1',
image: require('../assets/mosh.jpg')
},
])
//setMessages(loadMessages());
}}
/>
</Screen>
);
}

const styles = StyleSheet.create({

})

export default MessagesScreen;
当我像这样在控制台上记录“onPress”事件时:
onPress={() => console.log('message selected', item)}
这是我得到的:
enter image description here
下面是我为呈现消息而创建的 MessageSingle 屏幕,但我不知道该怎么做。
function MessageSingle() {


return (

<Screen>
<View style={styles.container}>
<AppText>{"kjhkjhjk"}</AppText>
{/* <AppText>{getMessagesApi}</AppText> */}
</View>
</Screen>

);
}

const styles = StyleSheet.create({
container: {}
});

export default MessageSingle;
所以我想从消息列表中获取消息。也许我不必创建单独的屏幕?我是这方面的初学者
任何帮助,将不胜感激!

最佳答案

您需要先添加您的 MessageSingle组件到导航容器。只需将其作为您 MessagesScreen 的屏幕之一即可零件。然后您需要使用该名称导航到它:

onPress={() => navigation.navigate('MessageSingle', {item})}
以上将导航到名称为 MessageSingle 的屏幕, 并传递对象 item作为参数。
为了在您的 MessageSingle 中访问它组件,您需要使用 route Prop 。
function MessageSingle({route}) {

console.log('item = ', route.params?.item); // this would be your item.

return (

<Screen>
<View style={styles.container}>
<AppText>{"kjhkjhjk"}</AppText>
{/* <AppText>{getMessagesApi}</AppText> */}
</View>
</Screen>

);
}

关于react-native - 使用对象作为参数调用导航时,您需要指定名称或键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66726260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com