我目前正在学习React js。当我的代码有一个show hide密码时,我的代码可以工作。但是当我有多个密码时,我会很挣扎。这段代码可以工作,因为它只有一个密码。
export default function App() {
const [changePassword, setChangePassword] = useState(true);
const changeIcon = changePassword === true ? false : true;
return (
<div className="wrapper-login">
<div className="wrapper-form">
<h2>Welcome Back!</h2>
<form>
<label>Email</label>
<div>
<input
type="email"
name="email"
required
/>
</div>
<label>Password</label>
<div className="form-group">
<input
type={changePassword ? "password" : "text"}
name="password"
required
/>
<span className="icon"
onClick={() => {
setChangePassword(changeIcon);
}}
>
{changeIcon ? <EyeOutlined /> : <EyeInvisibleOutlined />}
</span>
</div>
</form>
</div>
</div>
);
}
在codesandbox我有3个输入类型的密码,每个输入都有显示隐藏密码。你能帮我实现吗?并向我解释为什么这工作?我很抱歉我的英语不好。谢谢
3条答案
按热度按时间yhuiod9q1#
您可以创建一个控制隐藏或显示行为的组件。例如,您可以为孤立的显示隐藏行为创建一个通用组件。您传递输入名称,它将为您创建一个子组件。
用法:
n53p2ov02#
当你为多个事物使用一个状态时,状态的改变会影响所有使用该状态的元素。最好的方法是创建一个可重用的输入组件,并将其导入到任何你想要的地方。通过这种方式,所有的改变都会发生在该组件内部,而不会影响其他组件。
如果你想访问输入onChange,name和...,不要忘记传递...props到你的输入。
用法:
现在每一个切换将只影响点击的输入,没有副作用和重新渲染
ny6fqffe3#
这里是可重复使用的密码隐藏显示组件。
用法