Javascript 将阵列添加到本地存储

Javascript 将阵列添加到本地存储,javascript,reactjs,local-storage,Javascript,Reactjs,Local Storage,我在React中制作了一个临期日历,并使用localStorage,这样当用户第二天返回时,打开的门仍然打开 我能够写入和读取localStorage,但当用户第一次单击门时,它没有添加,而是添加到Openedar阵列中,但没有添加localStorage,我确信我缺少一些简单的东西,但看不到它!这是我的密码 const localData = localStorage.getItem("openDoors"); const [openedArr, setOpenedArr] = use

我在React中制作了一个临期日历,并使用localStorage,这样当用户第二天返回时,打开的门仍然打开

我能够写入和读取localStorage,但当用户第一次单击门时,它没有添加,而是添加到Openedar阵列中,但没有添加localStorage,我确信我缺少一些简单的东西,但看不到它!这是我的密码

  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));
  };

您还需要将值字符串化