Javascript React Native-函数捕获旧的钩子值
我遇到了函数捕获状态变量的问题:Javascript React Native-函数捕获旧的钩子值,javascript,react-native,react-hooks,Javascript,React Native,React Hooks,我遇到了函数捕获状态变量的问题: const SignIn = ({componentId}) => { const [email, setEmail] = useState(""); const [emailError, setEmailError] = useState(false); ... const getEmail = event => { setEmail(event); if (emailError &a
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函数捕获emailError和email变量。因此,当“getEmail”第一次运行时,它会正确处理正确(最新)的电子邮件和emailError。但是,当函数第二次运行时,它引用了错误的(旧的)电子邮件和emailError,因为函数仍然捕获了旧的值
如果有人知道如何避免这个问题或有提示,请让我知道。谢谢你的帮助。试试这个
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){
您正在设置电子邮件
,下一步您将尝试访问电子邮件
由于async
的setState
性质,更新的电子邮件将不适用于您的情况
你可以试试这个
const getEmail = event => {
setEmail(event);
if (emailError && event.length > 0){
setEmailError(false);
}else{
setEmailError(true);
}
};
您如何调用getEmail
函数?这在TextInput的onChangeText中使用,它基本上是在TextInputry This中的文本更改时运行的,如果(!emailError&&email.length>0)
,您在哪里将emailError
设置为true
?Hi Hi Hi Hiraku,阅读此-,然后尝试关闭问题。