使用localStorage尝试设置无法更新或删除数组值的数组值

问题描述

我必须从UI中选择一些元素,然后需要将每个所选ID的ID存储在localstorage中。当用户取消选择它时,也应该从本地存储中删除该值。对于我所做的

 @observable marks = JSON.parse(localStorage.getItem('marks')) || [];

    @action handleChange = Mid => {
      let getMarks =  JSON.parse(localStorage.getItem('marks')) || [];
      let foundindex = getMarks.indexOf(Mid)
      if (foundindex > -1) {
        remove(getMarks,id => id === Mid)
      } else {
        localStorage.setItem('marks',JSON.stringify([Mid]))
      }
  }

在这里,localStorage添加了唯一的最近值,而while并没有设置为我正在使用它呈现的observable

我该如何解决

谢谢。

更新的修复程序

@action handleChange = Mid => {
    let foundindex = this.marks.indexOf(Mid)
    if (foundindex > -1) {
      remove(this.marks,id => id === Mid)
      localStorage.setItem('marks',JSON.stringify(this.marks))
    } else {
      this.marks.push(Mid)
      localStorage.setItem('marks',JSON.stringify(this.Mid))
    }
  }

解决方法

要添加新项目,您要将其推入现有阵列。相反,您将使用一个元素创建一个新数组,并忽略以前存储的任何内容

更改:

localStorage.setItem('marks',JSON.stringify([Mid]))

收件人

getMarks.push(Mid)
localStorage.setItem('marks',JSON.stringify(getMarks))