javascript - 如何在下一个 js 中使用本地或 session 存储

标签 javascript reactjs local-storage next.js server-side-rendering

当我从我的 ssr 应用程序获得响应时,我试图将项目设置为 session 存储,但它显示未定义 session 存储的错误,因为在服务器端没有这样的存储,只有 cookie 但我没有需要那个。
所以我的问题是如何从 NextJS 中的 getInitialProps 将项目设置为 sessionStorage

最佳答案

我为此创建了一个自定义 Hook 以避免 SSR 错误。 useEffect 内的代码钩子(Hook)只会在客户端执行,所以你不需要检查 window .
钩子(Hook)/useSessionStorage.js

import { useState, useEffect } from "react";

const useSessionStorage = (name) => {
  const [value, setValue] = useState('')

  useEffect(() => {
    setValue(sessionStorage.getItem(name))
  }, [])

  return value
}

export default useSessionStorage
SomeComponent.js
import useSessionStorage from '../hooks/useSessionStorage'

const SomeComponent = () => {
  const zipCode = useSessionStorage('zipCode')

  return (
    <input value={zipCode} />
  )
}

关于javascript - 如何在下一个 js 中使用本地或 session 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66009011/

相关文章:

javascript - 格式化 PHP 和 Javascript 时钟

javascript - 通过对象属性实现条件逻辑

cookies - 如何保护Web应用程序免受cookie窃取攻击?

javascript - HTML 表单中的输入阻碍

javascript - 如何将 RSVP 延迟与 WebSocket 结合使用?

Javascript 从日期中删除日期名称

reactjs - 当我在 create-react-app 中输入 npm start 时如何指定自定义 URL

node.js - nodemailer 不发送邮件,给出 250 ok

javascript - 跨网络应用程序和 Chrome 扩展程序共享本地存储对象

javascript - 使用 localStorage 在本地存储字体