Javascript 浏览器&x27;s localstorage不断重置为未定义
我使用ReactJs,我想将更多项目推送到localstorage中已经存在的项目,但每次我重新加载localstorage时都会重置为未定义Javascript 浏览器&x27;s localstorage不断重置为未定义,javascript,reactjs,react-hooks,local-storage,Javascript,Reactjs,React Hooks,Local Storage,我使用ReactJs,我想将更多项目推送到localstorage中已经存在的项目,但每次我重新加载localstorage时都会重置为未定义 React.useEffect(() => { localStorage.setItem("cartItems", JSON.stringify(cartItems)); if (localStorage.getItem("cartItems") !== null) {
React.useEffect(() => {
localStorage.setItem("cartItems", JSON.stringify(cartItems));
if (localStorage.getItem("cartItems") !== null) {
try {
let existing = localStorage.getItem("cartItems");
if (existing !== JSON.stringify(cartItems)) {
try {
let newExist = JSON.parse(existing).push(cartItems);
localStorage.setItem("cartItems", newExist);
} catch (e) {
console.log("NOOOO")
}
}
} catch (error) {
console.log("CARTITMES Localstorage is empty")
}
} else {
console.log("Null Cartitems in localstorea")
}
})
您要做的第一件事是将购物车项目设置为本地存储 假设cartItems是一个数组,是一个状态
React.useEffect(() => {
// this is not necessary here
//localStorage.setItem("cartItems", JSON.stringify(cartItems));
if (localStorage.getItem("cartItems") !== null) {
try {
let existing = localStorage.getItem("cartItems");
//this is not the best way to compare Arrys of objects
if (existing !== JSON.stringify(cartItems)) {
try {
//let newExist = JSON.parse(existing).push(cartItems);
let newExist = [...JSON.parse(existing), ...cartItems];
localStorage.setItem("cartItems", JSON.stringify(newExist));
} catch (e) {
console.log("NOOOO")
}
}
} catch (error) {
console.log("CARTITMES Localstorage is empty");
localStorage.setItem("cartItems", JSON.stringify(cartItems));
}
} else {
console.log("Null Cartitems in localstorea");
localStorage.setItem("cartItems", JSON.stringify(cartItems));
}
},[cartItems])
您要做的第一件事是将购物车项目设置为本地存储 假设cartItems是一个数组,是一个状态
React.useEffect(() => {
// this is not necessary here
//localStorage.setItem("cartItems", JSON.stringify(cartItems));
if (localStorage.getItem("cartItems") !== null) {
try {
let existing = localStorage.getItem("cartItems");
//this is not the best way to compare Arrys of objects
if (existing !== JSON.stringify(cartItems)) {
try {
//let newExist = JSON.parse(existing).push(cartItems);
let newExist = [...JSON.parse(existing), ...cartItems];
localStorage.setItem("cartItems", JSON.stringify(newExist));
} catch (e) {
console.log("NOOOO")
}
}
} catch (error) {
console.log("CARTITMES Localstorage is empty");
localStorage.setItem("cartItems", JSON.stringify(cartItems));
}
} else {
console.log("Null Cartitems in localstorea");
localStorage.setItem("cartItems", JSON.stringify(cartItems));
}
},[cartItems])
将useEffect调用分开,如下所示:
//First you need to get data from the previous session which should be stored in localstorage already.
//We are using the key "cartItems" to identify the values we need
//if cartData exists then do something - (most likely JSON.parse(cartData)) if your goal is to work with the data that is stored
React.useEffect(() => {
const cartData = localstorage.getItem("cartItems")
if (cartData) {
try {
//Your Logic Here
}
} catch (error) {
console.log("CARTITMES Localstorage is empty")
}
} else {
console.log("Null Cartitems in localstorea")
}
}, []);
//Below you're stringifying your object and storing it in local storage
React.useEffect(() => {
localStorage.setItem("cartItems", JSON.stringify(cartItems));
});
将useEffect调用分开,如下所示:
//First you need to get data from the previous session which should be stored in localstorage already.
//We are using the key "cartItems" to identify the values we need
//if cartData exists then do something - (most likely JSON.parse(cartData)) if your goal is to work with the data that is stored
React.useEffect(() => {
const cartData = localstorage.getItem("cartItems")
if (cartData) {
try {
//Your Logic Here
}
} catch (error) {
console.log("CARTITMES Localstorage is empty")
}
} else {
console.log("Null Cartitems in localstorea")
}
}, []);
//Below you're stringifying your object and storing it in local storage
React.useEffect(() => {
localStorage.setItem("cartItems", JSON.stringify(cartItems));
});
第一行
localStorage.setItem(“cartItems”,JSON.stringify(cartItems))
可能总是将其设置为空(“null”|“undefined”
),这取决于cartItems
所包含的内容。能否在第二行中显示在useEffect之前如何获得变量cartItems
?或者可能在调用setItem之前执行console.log(cartItems)
,并查看第一行的值是多少localStorage.setItem(“cartItems”,JSON.stringify(cartItems))
可能总是将其设置为空(“null”|“undefined”
),这取决于cartItems
所包含的内容。能否在第二行中显示在useEffect之前如何获得变量cartItems
?或者在调用setItem之前执行console.log(cartItems)
,然后查看第一个值是什么