我试图访问从我的API get请求获取的对象,但是在屏幕上呈现项目时,我不断在console.log中返回Array []。
有人可以发现我错了吗?
const [posts, setPosts] = useState([]);
const [error, setError] = useState(false);
const [loading, setLoading] = useState(false);
const loadPosts = async () => {
setLoading(true);
const response = await messagesApi.getMessages();
setLoading(false);
if (refreshing) setRefreshing(false);
if (!response.ok) return setError(true);
setError(false);
setPosts(response.data);
};
useEffect(() => {
const newsocket = io.connect("http://ip:port");
loadPosts();
console.log(posts); // not working
newsocket.on("connect", (msg) => {
setSocket(newsocket);
});
return () => newsocket.close();
}, []);
return (
<FlatList
data={posts}
keyExtractor={(post) => post.id.toString()}
renderItem={({ item, index }) => (
<MessagesList
title={item.title}
onPress={() =>
navigation.navigate(routes.CHAT, { message: item, index, updateView })
}
/>
)}
/>
);
问题
console.log
在获得API响应之前执行。
解
console.log
当您添加posts
依赖项时将起作用
useEffect(() => {
console.log(posts);
}, [posts]); // added posts here
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句