getInitialProps никогда не вызывается в NextJS - PullRequest
0 голосов
/ 01 апреля 2020

У меня проблема с методом getInitialProps в Next JS. Это никогда не называется. Это проект, в котором у меня есть Apollo GraphQL клиент для одних страниц и getInitialProps для других. Я не уверен, как правильно настроить их для работы.

Apollo работает нормально и получает данные, как и должно. Проблема в том, что getInitialProps не вызывается.

Вот мой пользовательский _app.js файл

const App = ({ Component, pageProps, apollo }) => {
  return (
    <ApolloProvider client={apollo}>
      <Component {...pageProps} />
    </ApolloProvider>
  )
}

const API_URL =
  process.env.NODE_ENV === "development"
    ? "http://localhost/wordpress/index.php?graphql"
    : "https://page/index.php?graphql"

export default withApollo(({ initialState }) => {
  return new ApolloClient({
    link: new createHttpLink({
      uri: API_URL,
      fetch: fetch
    }),
    cache: new InMemoryCache()
  })
})(App, { getDataFromTree })

А вот как я звоню getInitialProps на странице

Coupons.getInitialProps = async function() {
  const res = await fetch('http://localhost:8000/data/');
  const data = await res.json();

  console.log(`Data fetched. Count: ${data.length}`);

  return {
    shows: data.map(entry => entry.show)
  };
};

Также. Страницы, на которых у меня Apollo извлекаются данные, не обязательно называть это REST API. Apollo страниц и REST страниц совершенно разные

1 Ответ

0 голосов
/ 01 апреля 2020

Эта проблема была исправлена ​​с помощью следующей документации на https://github.com/zeit/next.js/tree/canary/examples/with-apollo

Дело в том, что я завернул _app в Apollo провайдере, и правильный способ - обернуть только те страницы, которые нужны Apollo в нем.

Остальные, нуждающиеся в getInitialProps, должны остаться без изменений и вызвать в них REST API.

...