我从一个博客示例中使用react作为本地存储来编写这段代码,但刷新后它无法实时工作。我怎么能实时做呢?我认为它可以使用以前解决的效果挂钩,但我无法实现,有人帮我解决这个问题吗
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;
这个代码没有问题,但我想与实时工作,当我点击完成它显示实时我该怎么做?
如果你想用钩子
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
};
}
将挂钩导入App.js
import { useUserHook } from "./userHook";
在代码中添加一些更改
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;
我希望它能帮到你
您可以使用< code>useState实时处理本地存储。
请注意,下面的实现仅用于演示,您不应该将密码存储在本地存储中!
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;
如果您想了解为什么我们不应该在本地存储中存储密码,您可以查看这篇文章
将密码等敏感信息存储在本地存储文件中实际上简化了黑客的过程,因为他们不需要将cookie加载到自己的浏览器中。
你好,我是新的反应原生,我试图安装反应原生sqlite存储改变安装,我按照Android安装的所有指令:[https://www.npmjs.com/package/react-native-sqlite-storage][1] 我尝试使用命令:react native run android运行它,但每次我都会遇到错误: 失败:生成失败,出现异常。错误:无法确定任务“:app:mergeDebu
我正在使用React路由器开发React web应用程序。在我的应用程序中。我已经导入了js文件头和主组件。在home组件中,我有两个组件,分别称为在线银行和信用卡,它们是我从在线银行导入的。js和信用卡。js文件。 当用户单击主页中的链接按钮时。js组件、在线银行和信用卡组件应呈现。 相反,我得到了一个名为error:Invariant failed的错误:您不应该使用 为什么它不起作用? 索引
正在执行查询,但未得到任何结果。 路由器:-api/v1/service/appt/usr/{usr_id} 存储库代码, 从日志中查询, 项目表中的数据, 邮递员请求, 不确定这有什么问题。它不会返回记录。
当我使用JavaFX时,sleep函数不会相应地工作。如以下代码所示:
我在“反应代码”和“反应添加”上有一个自动分配角色,但“反应添加”和“删除”上出现了一个错误,为什么? 密码 错误原始\u反应\u删除 第312行,在“运行事件等待coro(*args,**kwargs)文件“/Users/CIP/Documents/GitHub/billizeAireboysClub/lojinha.py”中,第150行,在“原始反应”中删除帮会=不和谐。乌提尔斯。查找(lam
问题内容: 我已经构建了Gradle插件并将其发布到本地Maven存储库。我可以在〜/ .m2 /存储库中看到它。但是,当我运行Gradle项目以使用此插件时,它甚至不会在本地存储库中查找……至少,并非基于输出。 当从命令行运行时,它将报告此信息: 失败:生成失败,发生异常。 其中:构建文件“ D:\ Work \ MuseProject \ update4j-gradle-plugin \ ex