У меня есть приложение Express, которое принимает запрос GET из базового URL-маршрута, и компонент React, который выполняет запрос с использованием ax ios на componentDidMount.
router.get('/', async (req, res) => {
try {
const posts = await Post.find().sort({ createdAt: 'desc' });
res.json(posts);
} catch (err) {
res.status(500).json({ error: err });
}
});
componentDidMount() {
axios.get('http://localhost:5000/')
.then(res => {
if (res.data.length > 0) {
this.setState({ posts: res.data });
}
})
.catch(err => console.log(err));
}
Я пытаюсь развернуть свой проект на Heroku и использовать "proxy": "http://localhost:5000"
в моем пакете. json, что позволило бы мне сделать «Dynami c» ax ios запросов, например axios.get('/api/user/').then(...
. Я хочу изменить свой запрос в приведенном выше методе React componentDidMount на
componentDidMount() {
axios.get('/')
.then(res => {
if (res.data.length > 0) {
this.setState({ posts: res.data });
}
})
.catch(err => console.log(err));
}
showPosts = () => {
return this.state.posts.map(post => <Post post={post} key={post._id} />);
};
, но затем получаю сообщение об ошибке «this.state.posts.map не является функцией» метода ниже в моем компоненте React, что наводит меня на мысль, что я получаю это сообщение, потому что posts
не является массивом после того, как он установлен на данные из ответа.
Есть ли что-нибудь, что я должен делать иначе в моем желаемом топоре ios запрос GET?