React Native - 函数捕获旧的钩子值



>我遇到了函数捕获状态变量的问题:

const SignIn = ({componentId}) => {
const [email, setEmail] = useState("");
const [emailError, setEmailError] = useState(false);
...
const getEmail = event => {
setEmail(event);
if (emailError && email.length > 0){
setEmailError(false);
}
};
.....
}

问题是getEmail函数捕获电子邮件错误和电子邮件变量。因此,当"getEmail"第一次运行时,它会正确处理正确的(最新(电子邮件和电子邮件错误。但是,当函数第二次运行时,它引用错误的(旧(电子邮件和电子邮件错误,因为该函数仍然捕获了旧值。

如果有人知道如何避免此问题或有提示,请告诉我。感谢您的帮助。

试试这个,

const SignIn = ({componentId}) => {
const [email, setEmail] = useState("");
const [emailError, setEmailError] = useState(false);
...
const getEmail = event => {
setEmail(event);
if (emailError && email.length > 0){
setEmailError(false);
setEmail("");
}
};
.....

}

我认为你的状况有问题,

if (emailError && email.length > 0){

您正在设置email,下一步您将尝试访问email

由于setState的性质async,更新email将无法用于您的病情。

你可以试试这个,

const getEmail = event => {
setEmail(event);
if (emailError && event.length > 0){
setEmailError(false);
}else{
setEmailError(true);
}
};

相关内容

  • 没有找到相关文章

最新更新