Tengo una página llamada "Contenido" donde obtengo todos los datos de una API y pongo solo "nombre" y "biografía" en un carrito, en cada carrito tengo un botón llamado "Favourite" . Cuando el usuario hace clic en el botón, solo los datos del carrito (en mi caso, es "nombre" y "biografía" ) se almacenarán en LocalStorage.
Entonces, mi primera pregunta es cómo puedo almacenar esos datos específicos en el almacenamiento local.
Y en la página "Contenido favorito" quiero obtener los datos de almacenamiento local que el usuario almacenó al hacer clic en el botón "Favourite" .
Entonces, mi segunda pregunta es cómo puedo obtener y mostrar esos datos de almacenamiento local en otra página.
Aquí está mi enfoque:
import React, { useState, useEffect } from 'react'; import Card from 'react-bootstrap/Card'; const Posts = ({ posts, loading }) => { const [items, setItems] = useState([]); const click = () => { localStorage.setItem('items', JSON.stringify(items)); }; if (loading) { return <h2>Loading...</h2>; } return ( <div className="fav-content"> <ul className="card"> {posts.map((item, index) => { return ( <li key={index}> <Card style={{ width: '18rem' }}> <button onClick={click}>Add Favt</button> <Card.Body> <Card.Title>Name: {item.name}</Card.Title> <Card.Text>Bio: {item.bio}</Card.Text> </Card.Body> </Card> </li> ); })} </ul> </div> ); }; export default Posts;Cambié su fragmento de código y agregué funciones de obtención y configuración de elementos al almacenamiento local.
import React, { useState, useEffect } from 'react'; import Card from 'react-bootstrap/Card'; const Posts = ({ posts, loading }) => { // I dont think you need this state since yo uare not using it in this component const [items, setItems] = useState([]); const click = (name) => { const item = posts.find((post) => post.name === name); const localStorageItems = JSON.parse(localStorage.getItem('items')) || []. localStorage.setItem('items', JSON.stringify([...localStorageItems, item])) }; if (loading) { return <h2>Loading...</h2>; } return ( <div className="fav-content"> <ul className="card"> {posts.map((item, index) => { return ( <li key={index}> <Card style={{ width: '18rem' }}> <button onClick={() => click(item.name)}>Add Favt</button> <Card.Body> <Card.Title>Name: {item.name}</Card.Title> <Card.Text>Bio: {item.bio}</Card.Text> </Card.Body> </Card> </li> ); })} </ul> </div> ); }; export default Posts; Si desea utilizar elementos en otra página, debe hacer localStorage.getItem('items') y analizarlo.