我希望能够从服务器端的 API 检索数据,并将其加载到 React 上下文中,以使其可用于我的应用程序中的任何组件。我尝试了各种方法,但似乎没有什么能让我完全按照自己的意愿去做。我尝试过的一些事情包括:
getServerSideProps - 这允许我在服务器端检索数据,但只存在于页面组件中,所以如果我希望在每个页面上都可以使用它,并且我不知道我的用户将登陆哪个页面,我需要将此逻辑添加到每个页面。
_app.js 中的 getInitialProps - 我可以将其添加到 _app.js 组件中,该组件将在服务器端运行,并且可以通过上下文提供程序使其对所有组件可用,但问题是它在每个页面上运行,甚至在浏览客户端时。我希望能够一次且仅一次调用 API,但这似乎不允许。
_document.js 中的 getInitialProps - 我可以将其添加到 _document.js 组件中,该组件仅在服务器上运行,这似乎解决了为每个页面调用它的问题,但我无法弄清楚如何将它存储在 React 上下文中从那里。事实上,我似乎无法弄清楚如何在任何地方访问这些数据。它看起来像在_document.js getInitialProps被称为后在_app.js getInitialProps,所以我不知道如果我能在_document.js当我在_app.js使用我产生的价值从getInitialProps。
如果我在客户端上调用 API,有多种方法可以使此工作正常进行,但这不适用于我的用例,因为当客户端使用 API 中的数据更新时,它会导致内容闪烁。
有没有人想出解决这个用例的方法?