首页 > 解决方案 > 尝试创建 localStorage 不工作(NextJS)

问题描述

我需要将库存数据拉到我的 NextJS 应用程序中,然后我试图将该数据存储到 localStorage,但它永远不会被设置。我究竟做错了什么?

if (process.browser && localStorage.getItem('inv') === undefined) {
    const inv = await getInventory()
    localStorage.setItem('inv', inv)
  }

getInventory() 只是一个从远程 api 提取库存数据并返回 fullInventory 的节点脚本。

下面是 getInventory() 的代码:

const getInventory = async () => {
  const token = await refreshToken()
  const header = {
    Authorization: `Bearer ${token}`,
  };

  const queries = await getQueriesCount();

  axios.interceptors.response.use(function (response) {
    return response;
  }, async function (error) {
    await new Promise(function (res) {
      setTimeout(function () { res() }, 2000);
    });

    const originalRequest = error.config;

    if (error.response.status === 401 && !originalRequest._retry) {
      originalRequest._retry = true;
      const refreshedHeader = await setHeader()
      axios.defaults.headers = refreshedHeader
      originalRequest.headers = refreshedHeader
      return Promise.resolve(axios(originalRequest));
    }
    return Promise.reject(error);
  });

  let fullInventory = [];

  for (let i = 0; i < queries; i++) {
    setTimeout(async () => {
      try {
        const res = await axios({
          url: `${MyApi}/Item.json&offset=${i * 100}&customSku=!~,`,
          method: "get",
          headers: header,
        });

        console.log(`adding items ${i * 100} through ${(i + 1) * 100}`);
        const items = await res.data.Item;
        items[0]
          ? (fullInventory = fullInventory.concat(items))
          : fullInventory.push(items);

        if (i + 1 === queries) {
          return fullInventory;
        }
      } catch (error) {
        console.error("We have a problem here: ", error.response);
      }
    }, 2000 * i);
  };
}

标签: javascriptnext.js

解决方案


推荐阅读