Reputation: 305
I have code that outlines all the list items on the page. And each list item has a button to delete it. But after reloading the page, all list items are restored. How to avoid recovery after reboot?
import React, {useState} from "react";
export let List = () => {
let [deletedTasks, setDeletedTasks] = useState([]);
let [tasks, setTasks] = useState([
{ id: 1, title: 'title 1'},
{ id: 2, title: 'title 2'},
{ id: 3, title: 'title 3'}
]
let deleteElements = (id) => {
const task = tasks.find((e) => e.id === id);
setDeletedTasks((p) => [...p, task]);
setTasks((p) => p.filter((e) => e.id !== id));
}
return (<div>
<div>
<ul>{tasks.map(el =><li>{el.title}
<button onClick={() => deleteElements(el.id)}>Delete elements</button>
</li>)}</ul>
</div>
</div>)
}
Upvotes: 1
Views: 63
Reputation: 46
You need to use an REST API to store data (one option you can use is firebase)
Another option while not a recomended solution is to use local storage to persist data and get it after reloading
For example:
let deleteElements = (id) => {
const task = tasks.find((e) => e.id === id);
setDeletedTasks((p) => {
localStorage.setItem('deletedFiles' , JSON.stringify([...p, task]));
return [...p, task]
});
setTasks((p) => p.filter((e) => e.id !== id));
}
useEffect(() => {
const deletedItems = localStorage.getItem('deletedFiles');
if(deletedItems){
setDeletedTasks(JSON.parse(deletedItems))
}
}, [])
Upvotes: 0
Reputation: 6869
you can sync your task with localStorage so even on refreshing your tasks will be preserved.
import React, { useState, useEffect } from "react";
export let List = () => {
const storedTasks = localStorage.getItem("tasks");
let [tasks, setTasks] = useState(
storedTasks || [
{ id: 1, title: "title 1" },
{ id: 2, title: "title 2" },
{ id: 3, title: "title 3" },
]
);
let deleteElements = (id) => {
setTasks((p) => p.filter((e) => e.id !== id));
};
useEffect(() => {
localStorage.setItem("tasks", JSON.stringify(tasks));
}, [tasks]);
return (
<div>
<div>
<ul>
{tasks.map((el) => (
<li>
{el.title}
<button onClick={() => deleteElements(el.id)}>
Delete elements
</button>
</li>
))}
</ul>
</div>
</div>
);
};
Upvotes: 1