【发布时间】:2021-10-27 06:40:13
【问题描述】:
过去几天我一直在开发 Next.JS Web 应用程序,但遇到了一个问题。该应用程序有一个 API 调用 (/api/settings),它从数据库返回有关应用程序的一些设置。目前,我有一个函数可以返回这些设置并访问第一个组件:
App.getInitialProps = async () => {
const settingsRequest = await fetch(
`${process.env.NEXT_PUBLIC_API_URL}/api/settings`
);
const settingsResponse = await settingsRequest.json();
return { settings: settingsResponse };
};
这确实有效,我可以将设置传递给组件,但这有两个问题:
- 我需要将 prop 嵌套在许多组件中,才能到达我需要的组件
- 每次重新加载/更改页面时都会运行此请求
基本上,我需要创建一个系统来执行此操作:
- 在
_app.tsxgetInitialProps 中运行一个函数来检查数据是否已经在localStorage 中,如果没有,则发出API 请求并更新localStorage - 具有可从自定义挂钩访问的 localStorage 值。
目前的问题是我无法从app.tsx getInitialProps 访问 localStorage。因此,如果有人可以在在任何页面加载之前运行此功能,请告诉我。
谢谢!
【问题讨论】:
-
localstorage是一个浏览器 API,getInitialProps在服务器上运行,所以你不能从那里设置它,你必须从客户端fetch访问localstorage -
@sairaj 获取本地存储是什么意思?
-
我的意思是无论您在
getInitialProps中拨打的任何fetch电话,您都必须从客户端执行此操作,才能访问localstorage
标签: reactjs typescript api next.js local-storage