@dmitriu256

Как в NextJs объединить два ajax запроса в getInititalProps?

Осваиваю библиотеку NextJs и столкнулся с проблемой как объединить два ajax запроса?
Тестирование проводилось при помощи JsonFakeApi
Необходимо получить пост по id, а также автора поста (username)
Пост
Пользователь

Ранее данную задачу реализовал при помощи React
Фрагмент кода
constructor(props) {
        super(props);

        this.state = {
            post: {},
            author: '',
            comments: []
        };
    }

    componentDidMount() {
        let id = this.props.match.params.id;

        axios(`https://jsonplaceholder.typicode.com/posts/${id}`)
            .then(data => {
                const authorId = data.data.userId;
                const postId = data.data.id;

                this.setState({post: data.data});
                //Логин пользователя
                this.getUserName(authorId);

                //Получение списка комментариев к посту
                this.getPostComments(postId);

            })
            .catch(error => {
                console.log(error);
            })

    }

    //получение логина пользователя
    getUserName = id => {
        axios(`https://jsonplaceholder.typicode.com/users/${id}`)
            .then(data => {
                this.setState({author: data.data.username});
            })
            .catch(error => {
                console.log(error);
            })
    }


Как данное задание реализовать при помощи NextJs
В методе getInitialProps получилось выполнить только один запрос на получение поста.
Фрагмент кода на NextJs
Post.getInitialProps = async ({query, req}) => {
   //console.log(query);
    if(!req){
        return ({post: null})
    }
    
    const response = await fetch(`https://jsonplaceholder.typicode.com/posts/${query.id}`);
    const data = await response.json();
    return ({post: data});
}

Буду благодарен за помощь!
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 1
@dmitriu256 Автор вопроса
Мой вариант решения
Post.getInitialProps = async ({query, req}) => {
   //console.log(query);
    if(!req){
        return ({post: null})
    }

    const postApi = await fetch(`https://jsonplaceholder.typicode.com/posts/${query.id}`);
    const post = await postApi.json();

    //Получаем id пользователя
    const userId = post.userId;

    const userApi = await fetch(`https://jsonplaceholder.typicode.com/users/${userId}`);
    const user = await userApi.json();
   
    return ({post: post, name: user.username});
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы