Проблемы с асинхронной функцией getInitialProps, отвечающей за SSR
Я допустил где-то глупую ошибку в коде и у меня не срабатывает асинхронная функция getInitialProps.
Вот весь код:
import React, { useState, useEffect } from 'react'
// import Header from '../components/header'
// import Footer from '../components/footer'
function Contacts({ page: serverPage }) {
const [page, setPage] = useState(serverPage)
useEffect(() => {
async function load() {
const response = await fetch('http://uer/wp-json/wp/v2/pages')
const json = await response.json()
setPage(json)
}
if (!serverPage) load()
}, [])
if (!page)
return (
<React.Fragment>
{/* <Header pageName='Contacts' /> */}
<h2>loading page, please wait...</h2>
{/* <Footer /> */}
</React.Fragment>
)
return (
<React.Fragment>
{/* <Header pageName='Contacts' /> */}
<main dangerouslySetInnerHTML={{ __html: page[4].content.rendered }} />
{/* <Footer /> */}
</React.Fragment>
)
}
Contacts.getInitialProps = async ({ req }) => {
console.log('help') // Сюда не заходит
if (!req) return { page: null }
const response = await fetch('http://uer/wp-json/wp/2/pages/')
const page = await response.json()
return page
}
export default Contacts
Вообще, моей задачей является выгрузка данные со страницы, выгружаю из коробки WordPress.
На Фронтенд я выгружаю, всё работает прекрасно, однако меня заботит SSR и мне нужно его побороть, за него как раз-таки функция getInitialProps и отвечает.
Ответы (1 шт):
Автор решения: Кирилл Достоевский
→ Ссылка
Разобрался.
Функция выполняется, и выполняется при первом переходе на страницу.
А ошибка заключалась в том, что ссылку неверно указал в этой функции.
/wp/2/pages/ вместо /wp/v2/pages/