javascript - React.js : Save items after refreshing page

标签 javascript reactjs

我正在react.js 中做一个简单的Todolist。到目前为止我能够保存我的对象 到 LocalStorage,但是当我刷新页面时,Todo 元素消失了。

import React, { useState,useEffect } from 'react'
import TodoList from './TodoList.jsx'

const AddTodo = () => {

    const [newTodo, setNewTodo] = useState('')
    const [list, setList] = useState([])
    
    const handleSubmit = () => {

            const todoItem = {
                id:Math.floor(Math.random() * 10000),
                value:newTodo
            }

            if(todoItem){
                setList([...list,todoItem]) 
                setNewTodo('')    
            }
            /*gets the oldlist and whats inside of it and adds the new item */ 
            console.log(list)
            
 
    }

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

    useEffect(() => {
        const data = JSON.parse(localStorage.getItem('list'));
        if(data){
            setList(data)
        }
        
    }, [])
   
    return (
        <div className="input_container">
             <form onSubmit={(e) => e.preventDefault()}>
                <input type="text"
                onChange={e => setNewTodo(e.target.value)}
                className="todo-input" 
                placeholder="Write Todo.." 
                value={newTodo} 
                name="text"/>
           
                <button onClick={() => handleSubmit()} className="add-todo-button">
                    Add Todo
                </button>
            </form>

            <TodoList list={list} newTodo={newTodo}/>
          
        </div>
    )
}

export default AddTodo

最佳答案

创建状态时,您必须从所在状态的本地存储中获取待办事项列表。每次页面刷新时,都会从本地存储获取初始状态。如果它有其他内容,它会将其设置为 [] 像这样。

  const [newTodo, setNewTodo] = useState('')
  const [list, setList] = useState(JSON.parse(localStorage.getItem("list")) || [])

这是一种更好的方法。

关于javascript - React.js : Save items after refreshing page,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72638064/

相关文章:

javascript - 如何在 useEffect 中使用 useState,访问组件挂载时更新的 useState 值?

Javascript 定义属性

javascript - 状态变量在显示在页面上之前不存储 JSON 响应

reactjs - 使用自定义扩展加载资源不起作用

css - 在 ReactJS 中向渲染函数添加超时

reactjs - Electron + react 深层连接

javascript - Paypal Embedded Flow 不使用 returnUrl 或 cancelUrl

javascript - 在不使用 () => function(someVal) 的情况下停止在挂载上执行的 onClick 函数

javascript - 幻灯片页面 ID 未定义 Google Slides API (res.data.slides.objectId)

javascript - React 根据 prop 使用不同的导入组件