Javascript 将阵列添加到本地存储
我在React中制作了一个临期日历,并使用localStorage,这样当用户第二天返回时,打开的门仍然打开 我能够写入和读取localStorage,但当用户第一次单击门时,它没有添加,而是添加到Openedar阵列中,但没有添加localStorage,我确信我缺少一些简单的东西,但看不到它!这是我的密码Javascript 将阵列添加到本地存储,javascript,reactjs,local-storage,Javascript,Reactjs,Local Storage,我在React中制作了一个临期日历,并使用localStorage,这样当用户第二天返回时,打开的门仍然打开 我能够写入和读取localStorage,但当用户第一次单击门时,它没有添加,而是添加到Openedar阵列中,但没有添加localStorage,我确信我缺少一些简单的东西,但看不到它!这是我的密码 const localData = localStorage.getItem("openDoors"); const [openedArr, setOpenedArr] = use
const localData = localStorage.getItem("openDoors");
const [openedArr, setOpenedArr] = useState(localData ? localData : []);
const openDoor = e => {
e.currentTarget.parentElement.classList.add("opened");
setOpenedArr([...openedArr, e.currentTarget.id]);
localStorage.setItem("openDoors", openedArr);
};
所有内容都保存为本地存储中的字符串。从localstorage保存/加载时,需要更新stringify/parse值
...
const localData = JSON.parse(localStorage.getItem("openDoors"));
...
localStorage.setItem("openDoors", JSON.stringify(openedArr));
请在清理本地存储后尝试上述代码。一切都应该是好的 您正在设置的值与添加到本地存储的值不同 试着这样做:
const openDoor = e => {
e.currentTarget.parentElement.classList.add("opened");
const newValue = [...openedArr, e.currentTarget.id];
setOpenedArr(newValue);
localStorage.setItem("openDoors", JSON.stringify(newValue));
};
您还需要将值字符串化