#javascript #next.js
#javascript #next.js
Вопрос:
Мне нужно перенести данные инвентаризации в мое приложение NextJS, затем я пытаюсь сохранить эти данные в localStorage, но они никогда не устанавливаются. Что я делаю не так?
if (process.browser amp;amp; 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 amp;amp; !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.jsonamp;offset=${i * 100}amp;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);
};
}
Комментарии:
1. попробуйте это localStorage.setItem(‘inv’, JSON.stringify(inv))
2.
localStorage.getItem('inv') === undefined
неверно … возможноlocalStorage.getItem('inv') === null
, есть (поскольку.getItem
возвращаетnull
notundefined
, если свойство не существует) — документация … вы могли бы протестироватьlocalStorage.inv === undefined
, хотя3. Я забыл, что это должна быть строка :), но все равно не работает :(. Возможно, это мой скрипт getInventory.
4. по-прежнему
localStorage.getItem('inv') === undefined
никогда не бывает истинным5. Если я установлю localStorage.GetItem(‘inv’) === null, getInventory() не запускается. И, определенно, в localStorage ничего нет?