• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

324
Vistas
Reaccionar: muestra todos los elementos dentro de localStorage como una lista de UI de material

Tengo localStorage con varios elementos. Quiero recuperarlos todos y mostrarlos en una interfaz de usuario de material <ListItem> .

Aquí está mi código actual:

 function saveJob(key, value) { localStorage.setItem(key, value); }

la función saveJob es básicamente guardar el valor junto con una clave única. El contenido de localStorage sería algo como esto:

Llave Valor
1 Técnico
2 Plomero

Cómo recuperé los artículos:

 var savedJobs = []; useEffect(() => { var keys = Object.keys(localStorage), i = keys.length; while (i--) { savedJobs.push(localStorage.getItem(keys[i])); } return savedJobs; }, [])

Ahora sobre el problema, traté de mostrarlo en un componente funcional a través de <ListItem> Material UI como el siguiente:

 <List> {savedJobs.map((job) => ( <ListItem key={job.Key} disablePadding> <ListItemButton> <ListItemText primary={job.Value} /> </ListItemButton> </ListItem> ))} </List>

Esto no está funcionando. ¿Alguien puede señalarme en la dirección correcta?

almost 3 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

React no activa la reproducción cuando se cambió una variable local en un componente de función. Se volverá a renderizar cuando: el estado haya cambiado, se cambiaron los accesorios o se volvió a renderizar el componente principal.

Debe poner sus savedJobs para indicar y escribir

const [trabajosGuardados, establecerTrabajosGuardados] = estadoUso([]);

en vez de

var trabajos guardados = [];

almost 3 years ago · Juan Pablo Isaza Denunciar

0

Necesita estado para almacenar los datos que recupera del almacenamiento local. En lugar de su var de useEffect savedJobs cree una matriz dentro del gancho y luego actualice su estado con estos datos. Aquí hay un ejemplo:

 // Initiate your state as an empty array. const [savedJobs, setSavedJobs] = useState([]); // Used as an example instead of localstorage. const example = ["foo", "bar"]; useEffect(() => { let jobs = []; let keys = Object.keys(example), i = keys.length; while (i--) { jobs.push(example[i]); } setSavedJobs(jobs); }, [example]); return <>{savedJobs.map((job) => job)}</>;

O vea este ejemplo interactivo .

almost 3 years ago · Juan Pablo Isaza Denunciar

0

Primero verificaría qué hay dentro de su matriz de trabajos guardados. Parece que los trabajos guardados se verían así:

trabajos guardados = ['Técnico', 'Plomero'];

Por otro lado, está mapeando y obteniendo el valor así: {job.Key} & {job.Value}

Probar:

 <List> {savedJobs.map((job, i) => ( <ListItem key={i} disablePadding> <ListItemButton> <ListItemText primary={job} /> </ListItemButton> </ListItem> ))} </List>

pd: no debe usar i como clave, pero le dejo averiguar qué valor quiere allí.

Si desea usar {job.key} y {job.value}, debe push un objeto así:

 savedJobs.push({key: i, value: localStorage.getItem(keys[i])});
almost 3 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda