Hola, necesito ayuda sobre cómo actualizar la página al eliminar datos del almacenamiento local en React JS. Verifiqué que los datos se eliminaron de la consola, pero en la página después de actualizar manualmente, la eliminación de la página se eliminó. Espero entender mi problema.
Aquí está mi código de eliminación
const Posts = () => { const temp = JSON.parse(localStorage.getItem("Name","Image") || "[]"); const deleteItem = (index) =>{ localStorage.removeItem("Name"); localStorage.removeItem("Image"); } return ( <> <div className='post-data'> <div className='post-data-content'> { temp.map((val,index)=>{ return( <> <div className='posts-data' key={index}> <button type='button' className="delete-post" onClick={deleteItem}>x</button> <img src={val.image} alt={val.image}/> <h3>{val.name}</h3> </div> </> ) }) } </div> </div> </div> </> ) }
Puedes usar dos formas aquí,
window.location.reload();
. const Posts = () => { const temp = JSON.parse(localStorage.getItem("Name","Image") || "[]"); const deleteItem = (index) =>{ localStorage.removeItem("Name"); localStorage.removeItem("Image"); window.location.reload(); //like here } return ( <> <div className='post-data'> <div className='post-data-content'> { temp.map((val,index)=>{ return( <> <div className='posts-data' key={index}> <button type='button' className="delete-post" onClick={deleteItem}>x</button> <img src={val.image} alt={val.image}/> <h3>{val.name}</h3> </div> </> ) }) } </div> </div> </div> </> ) }
/login
, puede usar el gancho 'useNavigate()' como este import { useNavigate } from 'react-route-dom'; const Posts = () => { const navigate = useNavigate(); const temp = JSON.parse(localStorage.getItem("Name","Image") || "[]"); const deleteItem = (index) =>{ localStorage.removeItem("Name"); localStorage.removeItem("Image"); navigate('/login'); //like here } return ( <> <div className='post-data'> <div className='post-data-content'> { temp.map((val,index)=>{ return( <> <div className='posts-data' key={index}> <button type='button' className="delete-post" onClick={deleteItem}>x</button> <img src={val.image} alt={val.image}/> <h3>{val.name}</h3> </div> </> ) }) } </div> </div> </div> </> ) }
Puede obtener los datos iniciales del almacenamiento local y almacenarlos en estado de componente. Cuando se elimina un elemento del estado, se volverá a representar el componente y cuando su estado cambie, puede almacenar el estado actualizado en el almacenamiento local.
// const temp = JSON.parse(localStorage.getItem('Name', 'Image') || '[]'); const temp = JSON.parse(localStorage.getItem('Name') || '[]'); const Posts = () => { const [state, setState] = React.useState(temp); const deleteItem = removeindex => { // localStorage.removeItem('Name'); // localStorage.removeItem('Image'); setState(s => s.filter((_, index) => index !== removeindex)); }; React.useEffect(() => { localStorage.setItem('Name', JSON.stringify(state)); }, [state]); return ( <div className="post-data"> <div className="post-data-content"> {temp.map((val, index) => ( <div className="posts-data" key={index}> <button type="button" className="delete-post" onClick={() => deleteItem(index)}> x </button> <img src={val.image} alt={val.image} /> <h3>{val.name}</h3> </div> ))} </div> </div> ); };