Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

278
Views
¿Por qué el almacenamiento local no funciona reaccionar js en tiempo real?

Estoy haciendo este código de un ejemplo de blog como almacenamiento local con reaccionar. Pero no funciona en tiempo real después de actualizarlo. ¿Cómo puedo hacerlo en tiempo real? Creo que puede usar el gancho de efecto que solía resolverse, pero no puedo implementarlo, ¿alguien me ayuda con esta solución?

 import './App.css'; import React, { useState,useEffect } from 'react'; function App() { const [name, setName] = useState(''); const [pwd, setPwd] = useState(''); const handle = () => { localStorage.setItem('Name', name); localStorage.setItem('Password', pwd); }; const remove = () => { localStorage.removeItem('Name'); localStorage.removeItem('Password'); }; return ( <div className="App"> <h1>Name of the user:</h1> <input placeholder="Name" value={name} onChange={(e) => setName(e.target.value)} /> <h1>Password of the user:</h1> <input type="password" placeholder="Password" value={pwd} onChange={(e) => setPwd(e.target.value)} /> <div> <button onClick={handle}>Done</button> </div> {localStorage.getItem('Name') && ( <div> Name: <p>{localStorage.getItem('Name')}</p> </div> )} {localStorage.getItem('Password') && ( <div> Password: <p>{localStorage.getItem('Password')}</p> </div> )} <div> <button onClick={remove}>Remove</button> </div> </div> ); } export default App;

Este código no tiene ningún problema, pero quiero trabajar en tiempo real cuando hago clic en Listo, se muestra en tiempo real, ¿cómo lo hago?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

  • No haga referencia al almacenamiento local en su render, use el estado.
  • Inicializa el estado al valor de almacenamiento local.
  • En la actualización de un valor, actualice tanto el almacenamiento local como el estatal.
about 4 years ago · Juan Pablo Isaza Report

0

Puede usar useState para manejar el almacenamiento local en tiempo real.

Tenga en cuenta que la implementación a continuación es solo para demostración, ¡NO DEBE almacenar contraseñas en el almacenamiento local A TODO COSTO!

 import './App.css'; import React, { useState,useEffect } from 'react'; function App() { const [name, setName] = useState(''); const [pwd, setPwd] = useState(''); const [storedName, setStoredName] = useState(localStorage.getItem('Name')); const [storedPassword, getStoredPassword] = useState(localStorage.getItem('Password')); const handle = () => { localStorage.setItem('Name', name); localStorage.setItem('Password', pwd); setStoredName(name); setStoredPassword(pwd); }; const remove = () => { localStorage.removeItem('Name'); localStorage.removeItem('Password'); setStoredName(''); setStoredPassword(''); }; return ( <div className="App"> <h1>Name of the user:</h1> <input placeholder="Name" value={name} onChange={(e) => setName(e.target.value)} /> <h1>Password of the user:</h1> <input type="password" placeholder="Password" value={pwd} onChange={(e) => setPwd(e.target.value)} /> <div> <button onClick={handle}>Done</button> </div> {storedName && ( <div> Name: <p>{localStorage.getItem('Name')}</p> </div> )} {storedPassword && ( <div> Password: <p>{localStorage.getItem('Password')}</p> </div> )} <div> <button onClick={remove}>Remove</button> </div> </div> ); } export default App;

Si quieres entender por qué no debemos almacenar contraseñas en el almacenamiento local, puedes consultar este artículo

Almacenar algo confidencial como una contraseña en un archivo de almacenamiento local en realidad simplifica el proceso para un pirata informático, ya que no necesitará cargar la cookie en su propio navegador.

about 4 years ago · Juan Pablo Isaza Report

0

si quieres usar gancho

 import React, { useState, useEffect } from "react"; export function useUserHook() { const [name, setName] = useState(""); const [password, setPassword] = useState(""); const [change, setChange] = useState(false); React.useEffect(() => { const loadSaved = async () => { setName(localStorage.getItem("Name")); setPassword(localStorage.getItem("Password")); }; loadSaved(); }, [name, password, change]); const saveData = async (name, password) => { setChange(!change); await localStorage.setItem("Name", name); await localStorage.setItem("Password", password); }; const removeData = async () => { setChange(!change); await localStorage.removeItem("Name"); await localStorage.removeItem("Password"); }; return { name, password, saveData, removeData }; }

gancho de importación a App.js

 import { useUserHook } from "./userHook";

añadir algunos cambios en el código

 import React, { useState, useEffect } from "react"; import { useUserHook } from "./userHook"; import "./styles.css"; const App = () => { const { name, password, saveData, removeData } = useUserHook(); const [nameState, setName] = useState(""); const [pwdState, setPwd] = useState(""); const handle = () => { console.log("do save"); saveData(nameState, pwdState); }; const remove = () => { console.log("do remove"); removeData(); }; return ( <div className="App"> <h1>Name of the user:</h1> <input placeholder="Name" value={nameState} onChange={(e) => setName(e.target.value)} /> <h1>Password of the user:</h1> <input type="password" placeholder="Password" value={pwdState} onChange={(e) => setPwd(e.target.value)} /> <div> <button onClick={handle}>Done</button> </div> {name && ( <div> Name: <p>{name}</p> </div> )} {password && ( <div> Password: <p>{password}</p> </div> )} <div> <button onClick={remove}>Remove</button> </div> </div> ); }; export default App;

espero que te pueda ayudar

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!