javascript - 尝试创建 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);
};
}
解决方案
推荐阅读
- laravel - 试图获取非对象 Laravel 的属性“用户”
- prometheus - 非零值的 PromQL avg_over_time
- reactjs - 从 GET 请求中获取数据
- flutter - 输入'未来
' 不是 'Widget' 类型的子类型 - ios - 为什么 Flutter 不重用之前创建的线程?
- android - 为什么 webView.setWebChromeClient(new WebChromeClient()); 导致屏幕变黑?
- react-native - 有没有办法使用 wix navigation expo react native
- swift - ImagePicker 错误:错误域 = PlugInKit 代码 = 13
- mysql - 如何在多个表上执行完全外连接
- node.js - 在使用 axios POST 请求发送数据以及在另一个微服务中获取/获取数据方面需要帮助