我有一个简单的功能组件,它通过一个在闭眼和睁眼图像之间切换的小按钮将密码字段切换为可见和不可见。
父级中没有任何状态受到影响,但是,父级在图像更改后的一瞬间卸载并重新安装,这每次都会将子级的 isVisible 状态重置为 false。下面是代码:
const Password = (props) => {
const [isVisible, setIsVisible] = useState(false);
const handleIsVisible = useCallback(() => setIsVisible(prev => !prev), []);
return(
<>
<p className="EditProfileFieldLabel SubHeading">
{(props.name === "password") ? "Password" : "Confirm Password"}
</p>
<div className="PasswordVisibleContainer">
<button
className="PasswordVisibleBtn"
onClick={handleIsVisible}
>
<img
src={(isVisible) ? passShowImg : passHideImg}
alt="Visible"
/>
</button>
</div>
<input
className="Field LightGreenBG EditProfileFieldLong"
name={props.name}
placeholder="**********"
onChange={props.handleOnChange}
type={(isVisible) ? "text" : "password"}
/>
</>
);
}
谁能看到我遗漏的明显东西?我认为父母不应该因为孩子状态的变化而重新安装/重新渲染。