是否可以在状态中拥有多个localStorage.getItem?现在我有这样的想法:
const [list, useList] = useState(
JSON.parse(localStorage.getItem("dictionary")) || [] //tasks in my to-do
);我还应该将包含在任务中的子任务保持在这种状态下,结构如下:
- task {
- id
- body
- subtasks
[{
- id
- body
}]
}我是否也可以将子任务保存在本地存储中,并使用getItem访问它们
下面是我想用来获取我的子任务的内容:
JSON.parse(localStorage.getItem("domain")) || []
JSON.parse(localStorage.getItem("range")) || []发布于 2020-01-15 06:16:14
可以,在本地存储中可以有多个值数组。您需要先设置项,然后才能访问它,您还应该在保存对象或数组时将其序列化为字符串。
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")));发布于 2020-01-15 07:30:42
幸运的是,我看到了你的other question,其中包含一个运行代码片段,你也应该在这里添加它!
根据我所看到的,您正在尝试创建一个任务树,dictionary是一个任务,它可以有诸如domain和range之类的子任务,对吧?那么你应该有一个像这样的数据结构:
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中的主列表,然后更新本地存储,您已经这样做了,但您实际上只需要一个设置项,并且它
localStorage.setItem("dictionary", JSON.stringify(listState));因为你什么都有!
https://stackoverflow.com/questions/59742112
复制相似问题