首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个状态下有多个getItem localStorage

问一个状态下有多个getItem localStorage
EN

Stack Overflow用户
提问于 2020-01-15 05:35:27
回答 2查看 62关注 0票数 0

是否可以在状态中拥有多个localStorage.getItem?现在我有这样的想法:

代码语言:javascript
复制
const [list, useList] = useState(
    JSON.parse(localStorage.getItem("dictionary")) || [] //tasks in my to-do
  );

我还应该将包含在任务中的子任务保持在这种状态下,结构如下:

代码语言:javascript
复制
- task {
   - id
   - body
   - subtasks 
     [{
      - id
      - body
     }]
}

我是否也可以将子任务保存在本地存储中,并使用getItem访问它们

下面是我想用来获取我的子任务的内容:

代码语言:javascript
复制
JSON.parse(localStorage.getItem("domain")) || []
JSON.parse(localStorage.getItem("range")) || []
EN

回答 2

Stack Overflow用户

发布于 2020-01-15 06:16:14

可以,在本地存储中可以有多个值数组。您需要先设置项,然后才能访问它,您还应该在保存对象或数组时将其序列化为字符串。

代码语言:javascript
复制
localStorage.setItem("dictionary", JSON.stringify([]));
localStorage.setItem("domain", JSON.stringify([]));
localStorage.setItem("range", JSON.stringify([]));

alert(JSON.parse(localStorage.getItem("dictionary")));
alert(JSON.parse(localStorage.getItem("domain")));
alert(JSON.parse(localStorage.getItem("range")));
票数 0
EN

Stack Overflow用户

发布于 2020-01-15 07:30:42

幸运的是,我看到了你的other question,其中包含一个运行代码片段,你也应该在这里添加它!

根据我所看到的,您正在尝试创建一个任务树,dictionary是一个任务,它可以有诸如domain和range之类的子任务,对吧?那么你应该有一个像这样的数据结构:

代码语言:javascript
复制
singleTask = {
  id: 0,
  body: "task",
  domain: [
    {
      id: 00,
      body: "subtask domain 1"
    },
    {
      id: 01,
      body: "subtask domain 2"
    }
  ],
  range: [
    {
      id: 10,
      body: "subtask range 1"
    },
    {
      id: 11,
      body: "subtask range 2"
    }
  ]
}

当您将任务呈现为TaskListItem时,您呈现的是task.body。然后将task.domain传递给SubtaskDomain组件,将task.range传递给SubtaskRange组件。当您提交一个子任务时,更新App中的主列表,然后更新本地存储,您已经这样做了,但您实际上只需要一个设置项,并且它

代码语言:javascript
复制
localStorage.setItem("dictionary", JSON.stringify(listState));

因为你什么都有!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59742112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档