【发布时间】:2022-01-23 01:37:09
【问题描述】:
我在一些看似简单得可笑的事情上遇到了麻烦,我不敢相信我不得不这样做。
我有一个数组messages: Message[] = [...],我需要遍历它。但是,循环/映射没有发生。我已经尝试了我所知道的各种迭代,但似乎都不起作用。
这是我的代码:
const getMessages = (messages: Message[]) => {
const cards = []
// eslint-disable-next-line no-console
console.log("Test 1: ", messages);
// eslint-disable-next-line no-console
console.log("Test 2: ", messages.length);
// eslint-disable-next-line no-console
console.log("Test 3: ", messages[0]);
let i = 0;
for (const msg of messages) {
// eslint-disable-next-line no-console
console.log("ADD TO LIST");
cards.push(
<MessageSummary
key={i}
council={msg.council}
latestMessage={msg.content}
date={msg.date"}
hasBeenRead={false}
/>
);
i += 1;
};
if (cards.length > 0) {
return messages;
}
return (
<Text style={styles.noApplicationsMessage}>
You don't have any messages yet
</Text>
);
};
在我的终端中,这是输出:
如您所见,当我登录messages 时,它会正确输出数据,但如果我尝试检查长度或访问元素,它就不起作用。
编辑
在这里我调用我的数据库以获取 messages 数据。
const processNewMessages = useCallback((newMessages: Message[]) => {
setMessages(newMessages);
}, []);
useFocusEffect(
useCallback(() => {
if (userExternalId < 0) {
return;
}
setLoading(true);
getMessages(userExternalId)
.then((messagesQuery) => processNewMessages(messagesQuery))
.catch(() => {
setError("Messages could not be fetched. Please try again later.");
setShowBanner(true);
})
.finally(() => {
setLoading(false);
});
}, [processNewMessages, userExternalId])
);
感谢任何可以提供帮助的人,谢谢。
【问题讨论】:
-
你能详细说明一下什么是 userExternalId 类型,虽然它看起来不像一个数组。
标签: arrays typescript react-native object iteration