Оба вызова могут быть сделаны внутри componentDidMount()
async componentDidMount(){
axios.get('http://reduxblog.herokuapp.com/api/posts/{{ID}}')
.then((response) => { this.setState({ posts: response.data})})
.catch(error => console.warn(error));
axios.get('http://reduxblog.herokuapp.com/api/comments={{ID}}')
.then((response) => { this.setState({ comments: response.data})})
.catch(error => console.warn(error));
}
Однако вам необходимо отследить любые возникающие ошибки.Вы также должны изменить какой элемент в состоянии вы пишете.Поскольку оба вызова записывают данные, это означает, что второй вызов перезапишет результат первого вызова, передавая каждый
. Альтернативным способом будет использование async/await
, однако эти функции выдают, поэтому вам нужноубедитесь, что вы завернули их в try/catch
.Использование async/await
означает, что вам не нужно иметь бесконечные цепочки .then
и .catch
, но это означает, что вы должны отлавливать любые ошибки, которые они генерируют.
Мы можем обновить вызовы функцийиспользовать async/await
следующим образом:
async componentDidMount() {
try {
const postResponse = await axios.get(`http://reduxblog.herokuapp.com/api/posts/${ID}`);
const commentResponse = await axios.get(`http://reduxblog.herokuapp.com/api/comments/${ID}`);
this.setState({ posts: postResponse.data, comments: commentResponse.data });
} catch (err) {
console.warn(err);
}
}
Надеюсь, это поможет и устранит любые возникающие проблемы.