【问题标题】:How do i get Items from localstorage and render it to my list?如何从本地存储中获取项目并将其呈现到我的列表中?
【发布时间】:2020-01-15 11:21:04
【问题描述】:

我正在尝试创建一个包含两个名为“标题”和“详细信息”的值的待办事项列表。 到目前为止,我可以在本地存储中设置项目,但不确定如何从同一个本地存储中取回项目并将其呈现在列表中。

这是我的 TaskContext.js 组件:

import React, { createContext, useState, useEffect } from "react";
import uuid from "uuid/v1";

export const TaskContext = createContext();

const TaskContextProvider = props => {
  const [tasks, setTasks] = useState([
    { title: "name of the wind", detail: "patrick", id: 1 },
    { title: "Rich dad poor dad", detail: "wilson", id: 2 }
  ]);

  useEffect(() => {
    localStorage.setItem("tasks", JSON.stringify(tasks));
  }, [tasks]);

  const addTask = (title, detail) => {
    setTasks([...tasks, { title: title, detail: detail, id: uuid() }]);
  };

  const removeTask = id => {
    setTasks(tasks.filter(task => task.id !== id));
  };

  return (
    <TaskContext.Provider value={{ tasks, addTask, removeTask }}>
      {props.children}
    </TaskContext.Provider>
  );
};

export default TaskContextProvider;

请帮帮我。

【问题讨论】:

标签: javascript reactjs


【解决方案1】:
localStorage.getItem("tasks")

把它放在一个变量中,然后JSON.parse()它。

【讨论】:

  • 当然可以,但请稍微描述一下,我需要将 ti 放入使用效果挂钩吗?
【解决方案2】:

您可以使用挂钩内的localStorage.getItem("tasks") 从localStorage 中检索数据。

示例

const SomeComponent = props => {
  const [tasks, setTasks] = useState();

  useEffect(() => {
    let taskList = JSON.parse(localStorage.getItem("tasks")); // get the data
    if(taskList)  {
      setTasks(taskList); // update the state if taskList has data
    }
  }, []);



  return (
    /** Print your task here */
  );
};

export default SomeComponent;

【讨论】:

  • 它成功了,谢谢!
【解决方案3】:
  1. 您保存在 localStorage 中的项目以 Json 格式存储。
  2. localStorage 具有用于访问其存储以进行基本 CRUD 活动的方法,例如:
    • localStorage.setItem(key: JSON.stringify(value)),在这种情况下,您使用它来将项目保存到 localStorage
    • JSON.parse(localStorage.getItem(key)) 要获取密钥存储的项目,在这种情况下,您需要将其从 JSON 转换为普通对象,因此需要 JSON.parse()
    • localStorage.clear()清除localStorage中的所有项目
    • localStorage.removeItem(key) 通过项目键从 localStorage 中删除项目

const theTasks = JSON.parse(window.localStorage.getItem('tasks'));

【讨论】:

  • 我需要把这个放在哪里?里面有什么钩子还是什么?
  • 这取决于你到底想做什么@abhinavAnshul
  • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
猜你喜欢
  • 1970-01-01
  • 2021-05-14
  • 2020-07-24
  • 1970-01-01
  • 2018-06-22
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
相关资源
最近更新 更多