访问服务器上的Next.js客户端状态

发布时间:2020-07-06 01:38

我正在尝试使用getServerSideProps函数在Next.js应用程序中获取动态数据。该请求必须包含一个令牌,该令牌存储在客户端,以便在后端对用户进行身份验证。

我尝试了以下操作:

export async function getServerSideProps(context) {
  const token = window.localStorage.getItem('token')
  const data = await axios.get("/data", { headers: { Authorization: `Bearer ${token}` }});
  return { props: { data } };
}

但是我得到ReferenceError : window is not defined,这是有道理的,因为请求是在服务器上进行的,并且window对象不存在于服务器上(仅存在于客户端上)。

我可以在getServerSideProps中访问客户端状态还是可以在服务器上存储下一个状态?如果不是这样,看起来执行此操作的唯一方法就是将请求设为客户端。

回答1

改用cookie。因为getServersideProps发生在服务器端渲染中,所以window或localStorage无法访问。使用cookie和js-cookie库来设置和获取令牌。