Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在下一个js中使用本地或会话存储_Javascript_Reactjs_Local Storage_Next.js_Server Side Rendering - Fatal编程技术网

Javascript 如何在下一个js中使用本地或会话存储

Javascript 如何在下一个js中使用本地或会话存储,javascript,reactjs,local-storage,next.js,server-side-rendering,Javascript,Reactjs,Local Storage,Next.js,Server Side Rendering,当我从ssr应用程序得到响应时,我试图将项设置为会话存储,但它显示了一个错误,即未定义会话存储,因为在服务器端并没有这样的存储,只有cookie,但我不需要它 因此,我的问题是如何在NextJS中从getInitialProps将项目设置为SessionStorage调用getInitialProps时,无法将项目设置为SessionStorage,因为getInitialProps是在服务器端运行的 调用窗口对象的方法时,可以首先确定窗口对象是否未定义 如果你用钩子 useEffect((

当我从ssr应用程序得到响应时,我试图将项设置为会话存储,但它显示了一个错误,即未定义会话存储,因为在服务器端并没有这样的存储,只有cookie,但我不需要它


因此,我的问题是如何在NextJS中从getInitialProps将项目设置为SessionStorage

调用
getInitialProps
时,无法将项目设置为SessionStorage,因为
getInitialProps
是在服务器端运行的

调用窗口对象的方法时,可以首先确定窗口对象是否未定义

如果你用钩子

  useEffect(() => {
    if (window) { 
      // set props data to session storage or local storage  
    }
  }, []);

getInitialProps
将在客户端或服务器端执行。因此,您需要在服务器端阻止访问会话存储

Page.getInitialProps = async (context) => {
  if (typeof window !== 'undefined') {
    window.sessionStorage.set('item', 'itemValue')
  }
}